最近学习spring+redis来缓存数据,看得一些书籍和教程都是spring-data-redis1.x的版本,其中一些方法已通过时了,因此我整理了一下简单的2.x的配置。
项目地址:https://github.com/ksyzz/spri...git
项目使用的是maven管理依赖github
<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的包。redis
建立一个配置类RedisConfig,为该类添加@Configuration和@EnableCaching(启用缓存)的注解。
若是想在spring的注解@Cacheaable使用redis缓存,关键在于自定义CacheManager的bean。
代码以下:spring
@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。json