前言
最近學習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。