前言
最近学习spring+redis来缓存数据,看得一些书籍和教程都是spring-data-redis1.x的版本,其中一些方法已经过时了,所以我整理了一下简单的2.x的配置。
项目地址:https://github.com/ksyzz/spri…
项目依赖
项目使用的是maven管理依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<version>1.5.3.RELEASE</version>
</dependency>
导入spring-data-redis和redis.client的包。
配置类
创建一个配置类RedisConfig,为该类添加@Configuration和@EnableCaching(启用缓存)的注解。
如果想在spring的注解@Cacheaable使用redis缓存,关键在于自定义CacheManager的bean。
代码如下:
@Configuration
@EnableCaching
public class RedisConfig {
@Value("${spring.redis.host}")
private String host;
@Value("${spring.redis.port}")
private int port;
/**
* 如果只使用注解则不需要配置该bean
* @param jedisConnectionFactory
* @return
*/
@Bean
public RedisTemplate initRedisTemplate(@Qualifier("connectionFactory") JedisConnectionFactory jedisConnectionFactory) {
RedisSerializer str = new StringRedisSerializer();
RedisSerializer json = new GenericJackson2JsonRedisSerializer();
RedisTemplate redisTemplate = new RedisTemplate();
redisTemplate.setConnectionFactory(jedisConnectionFactory);
redisTemplate.setKeySerializer(str);
redisTemplate.setValueSerializer(json);
redisTemplate.setHashKeySerializer(str);
redisTemplate.setHashValueSerializer(json);
return redisTemplate;
}
@Bean(name = "connectionFactory")
public JedisConnectionFactory initConnect(){
RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration(host, port);
JedisConnectionFactory connectionFactory = new JedisConnectionFactory(redisStandaloneConfiguration);
connectionFactory.afterPropertiesSet();
return connectionFactory;
}
@Bean
public CacheManager init(@Qualifier("connectionFactory") JedisConnectionFactory jedisConnectionFactory){
// redis2.x以后,cacheManager 不再需要RedisTemplate来创建了
RedisCacheManager cacheManager = RedisCacheManager.builder(jedisConnectionFactory)
.build();
cacheManager.initializeCaches();
return cacheManager;
}
}
其他注意事项
需要保存到redis的对象必须implements Serializable。