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

前言

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

    原文作者:十三
    原文地址: https://segmentfault.com/a/1190000015481125
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞