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;
}
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM