1. 程式人生 > >Spring整合Redis快取例項

Spring整合Redis快取例項

package com.kilomob.powernetwork.cache.redis;

import java.io.IOException;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.ResourcePropertySource;
import org.springframework.data.redis.cache.RedisCacheManager;
import org.springframework.data.redis.connection.RedisSentinelConfiguration;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.JdkSerializationRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;

import redis.clients.jedis.JedisPoolConfig;

/**
 * Redis InitConfiguration Bean
 * 
 *   
 * @author fengjk  
 * @date 2017年4月11日
 * @since 1.0
 */
@Configuration
@EnableCaching
public class RedisConfiguration {
	private static final Logger logger = LoggerFactory
			.getLogger(RedisConfiguration.class);

	@Autowired
	private RedisConfig redisConfig;

	@Autowired
	JedisPoolConfig jedisPoolConfig;

	@Bean
	public JedisPoolConfig jedPoolConfig() {
		JedisPoolConfig poolConfig = new JedisPoolConfig();
		poolConfig.setMaxIdle(redisConfig.maxIdle);
		poolConfig.setMaxWaitMillis(redisConfig.maxWait);
		poolConfig.setMaxTotal(redisConfig.maxTotal);
		return poolConfig;
	}

	@Bean
	public JedisConnectionFactory redisConnectionFactory() {
		JedisConnectionFactory jcf =null;
		if (redisConfig.isSentinel) {
			try {
				ResourcePropertySource propertySource = new ResourcePropertySource("resource", "classpath:application.properties");
				RedisSentinelConfiguration sentinelConfig = new RedisSentinelConfiguration(propertySource);
				
				jcf = new JedisConnectionFactory(sentinelConfig, jedisPoolConfig);
				jcf.setTimeout(redisConfig.maxWait);
//				jcf.setPassword(redisConfig.password);
			} catch (IOException e) {
				logger.error("confile not exist or error:",e);
			} 
			
		} else {
			jcf = new JedisConnectionFactory(jedisPoolConfig);
			jcf.setHostName(redisConfig.hostName);
			jcf.setPort(redisConfig.port);
//			jcf.setPassword(redisConfig.password);
			jcf.setTimeout(redisConfig.timeout);
			jcf.setUsePool(true);
		}
		return jcf;
	}


	@SuppressWarnings("rawtypes")
	@Bean
	public RedisTemplate redisTemplate() {
		RedisTemplate<String, String> redisTemplate = new RedisTemplate<String, String>();
		redisTemplate.setConnectionFactory(redisConnectionFactory());
//		redisTemplate.setEnableTransactionSupport(true);
		StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
		
		//jdk序列化
		RedisSerializer<Object> redisSerializer = new JdkSerializationRedisSerializer();
		
		redisTemplate.setKeySerializer(stringRedisSerializer);
		redisTemplate.setValueSerializer(redisSerializer);
		
		redisTemplate.setHashKeySerializer(stringRedisSerializer);
		redisTemplate.setHashValueSerializer(stringRedisSerializer);
		
		
		redisTemplate.setExposeConnection(true);
		redisTemplate.afterPropertiesSet();
		return redisTemplate;
	}

	@Bean
	public CacheManager cacheManager(RedisTemplate<String, Object> redisTemplate) {
		RedisCacheManager cacheManager = new RedisCacheManager(redisTemplate);
		cacheManager.setDefaultExpiration(60 * 60);
		return cacheManager;
	}
}
配置檔案:application.properties

相關推薦

Spring整合Redis快取例項

package com.kilomob.powernetwork.cache.redis; import java.io.IOException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframe

Spring整合Redis快取,提高查詢效率

整合redis快取後可以將資料庫的查詢介面,序列化到redis中,key就是註解中的引數,例如@Cacheable(“findUsers”): 存在redis中的key就是findUsers。快取了這個結果之後再次請求這個方法就不會去資料庫中查,而是從redis快取中讀取資料,這樣就減少

Spring整合Redis快取實現

下面我們來實現Spring整合Redis快取如何實現的。一般有一下幾個步驟 Spring整合Redis的幾個步驟: 1、搭建Redis 伺服器環境(windows環境下搭建\Linux環境下搭建) 2、啟動Redis服務 3、maven專案中新增依賴 4、

spring整合redis快取

如果對spring cache不瞭解,這邊有一篇文章詳細的介紹了 http://jinnianshilongnian.iteye.com/blog/2001040 改專案基於maven構建 相關依賴 Xml程式碼 1 2

Spring整合Redis實現資料快取

一、什麼是RedisRedis 是一個開源(BSD許可)的,記憶體中的資料結構儲存系統,它可以用作資料庫、快取和訊息中介軟體。 它支援多種型別的資料結構,如 字串(strings), 雜湊(hashes), 列表(lists), 集合(sets), 有序集合(sorted s

SpringBoot入門系列(七)Spring Boot整合Redis快取

前面介紹了Spring Boot 中的整合Mybatis並實現增刪改查,。不清楚的朋友可以看看之前的文章:https://www.cnblogs.com/zhangweizhong/category/1657780.html。 今天主要講解Springboot整合Redis。Redis是目前使用最多的快取,包

Spring優雅整合Redis快取

  “小明,多系統的session共享,怎麼處理?”“Redis快取啊!” “小明,我想實現一個簡單的訊息佇列?”“Redis快取啊!” “小明,分散式鎖這玩意有什麼方案?”“Redis快取啊!” “小明,公司系統響應如蝸牛,咋整?”“Redis快取啊!” 本著研究的精神,我們來分析下小明的第四個問

spring整合redis

data sch throws ack xid .org source protect pid 1,利用spring-data-redis整合 項目使用的pom.xml: <project xmlns="http://maven.apache.org/POM/4.0

Spring整合Redis做數據緩存(Windows環境)

端口號 init 技術分享 factory redis-cli @service tab long 配置 當我們一個項目的數據量很大的時候,就需要做一些緩存機制來減輕數據庫的壓力,提升應用程序的性能,對於java項目來說,最常用的緩存組件有Redis、Ehcache和Mem

Spring整合Redis(spring-data-redis)

nds 獲取 可能 div 普通 工具 long red 等待 歷經幾天看了大量的博客資料,差不多算是搞定了,目前只是針對單個數據源,集群暫時沒研究 maven依賴 <properties> <!-- redis 版本 --> &l

網站性能優化小結和spring整合redis

remove utf ota turn tor package process 基本屬性 version 現在越來越多的地方需要非關系型數據庫了,最近網站優化,當然從頁面到服務器做了相應的優化後,通過在線網站測試工具與之前沒優化對比,發現有顯著提升。 服務器優化目前主要優化

spring 整合 redis的配置

index row val return created log idea pass truct   廢話不說,直接上代碼:   1、先添加依賴包 <!--redis--> <dependency>

Spring整合Redis報ClassCastException

最近在用Spring註解方式Cacheable 整合Redis的時候,報ClassCastException 異常,我方法返回值是一個PageVo, 報不能將PageVo 不能轉換成String 型別。一開始網上搜都是說SpringBoot整合方案,但我用的是Spring的方式的,後來看過幾

Spring整合Redis註解實現

之前我們說了Spring這個Redis,使用RedisTemplate 實現,不過有些地方也過於麻煩,因此Spring 團隊對 Jedis 進行了封裝,獨立為 spring-data-redis 專案,配合 spring 特性並整合 Jedis 的一些命令和方法。並提供了相關注解,幫助我們快

Spring整合redis帶測試用例Demo完整程式碼

專案結構 jar包 <!--redis--> <dependency> <groupId>redis.clients</groupId> <artifa

Springboot 2.0.x 整合Redis快取

文章目錄 Springboot 2.0.x 整合Redis快取 1、引入Redis快取依賴 2、配置Redis 資料庫 3、配置Redis CacheManager

【nosql-redisspring整合redis

環境: MAVEN+SPRING+MYBATIS+MYSQL+REDIS 1 pom.xml檔案下載依賴: <dependency> <groupId>org.springframework.data</groupId> &

springboot 2.0 教程-07-整合redis快取框架

閱讀原文:https://blog.bywind.cn/articles/2018/11/28/1543373589258.html 視訊教程:https://www.bilibili.com/video/av35595465 課程原始碼:https://github.com/ibywind/s

Spring整合redis叢集

目錄 1,說明 6,使用 1,說明 本文使用的客戶端為jedisCluster.它已經封裝了一些常用操作。故只需根據自己需要再進行封裝即可。 2,jar版本 使用的jar包的版本如下 jedis-2.9.0.jar(據網上反饋,只有這個版

springboot整合redis快取

使用redis作為快取 1. 在pom.xml檔案中匯入依賴 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>