springboot2.x 的 RedisCacheManager变化

springboot2.x 的 RedisCacheManager变化

springboot2.x 的 RedisCacheManager变化

由于最近在学着使用redis做缓存,使用的是springboot2.x来搭建的项目。 
看了看网上的一些教程,但是大多数教程都是基于1.x的版本来讲解的,但是springboot2.x之后发生了一些变动,网上想找一些资料不太容易。

springboot配置缓存过期时间,网上大部分资料是使用ReidsCacheManager来进行自定义的配置 
以下是大部分网上的代码(这也是基于springboot1.x的版本可以使用的)

@Bean
public CacheManager cacheManager(RedisTemplate redisTemplate) {
    RedisCacheManager cacheManager= new RedisCacheManager(redisTemplate);
    cacheManager.setDefaultExpiration(60);
    Map<String,Long> expiresMap=new HashMap<>();
    expiresMap.put("Product",5L);
    cacheManager.setExpires(expiresMap);
    return cacheManager;
}

然而在springboot2.x中,RedisCacheManager已经没有了单参数的构造方法 
以下是springboot2.x版本下 RedisCacheManager的大部分方法 
这里写图片描述

可以发现原来1.x版本的构造方法已经没有了,新的构造方法如图所示。 
本人没有看1.x的源码,我发现这里有一个RedisCacheManagerBuilder的内部类,从名字就不难发现这是一个用来构造RedisCacheManager的建造模式的应用吧。 
所以以下是本人使用的RedisCacheManager的构造方法(如果定制化要求的话可以修改其中的配置就可以),这里我只设置了缓存失效时间为一小时,如需其他配置可以到RedisCacheConfiguration这个类中去寻找一下。

     @Bean
    public CacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) {
        RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig()
                .entryTtl(Duration.ofHours(1)); // 设置缓存有效期一小时
        return RedisCacheManager
                .builder(RedisCacheWriter.nonLockingRedisCacheWriter(redisConnectionFactory))
                .cacheDefaults(redisCacheConfiguration).build();
    }

之前的代码是这样的
@Bean
public CacheManager cacheManager(RedisTemplate redisTemplate) {
RedisCacheManager cacheManager = new RedisCacheManager(redisTemplate);

RedisCachePrefix cachePrefix = new RedisCachePrefix() {
@Override
public byte[] prefix(String s) {
return new StringRedisSerializer().serialize("XXX:".concat(s));
}
};
cacheManager.setUsePrefix(true);
cacheManager.setCachePrefix(cachePrefix);
cacheManager.setDefaultExpiration(30 * 60);
return cacheManager;
}
 
posted @ 2019-05-08 19:23  龙X  阅读(3738)  评论(0编辑  收藏  举报