springboot集成redis2.x,使用spring注解进行缓存

前言

最近学习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

相关文章
相关标签/搜索