日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

缓存-SpringCache-自定义缓存配置

發(fā)布時間:2024/4/13 javascript 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 缓存-SpringCache-自定义缓存配置 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

redis 默認使用 jdk 序列化,需要我們配置序列化機制,自定義一個配置類,否則存入的數(shù)據(jù)顯示亂碼

@EnableCaching //開啟緩存 @Configuration public class MyCacheConfig {@Beanpublic RedisCacheConfiguration redisCacheConfiguration(){RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig();//指定鍵和值的序列化機制config = config.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer()));config = config.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new GenericJackson2JsonRedisSerializer()));return config;} }

使用以上配置后,雖然亂碼的問題解決了,但配置文件又不生效了,比如過期時間等,這是因為在初始化時會判斷用戶是否自定義了配置文件,如果自定義了,原來的就不會生效,源碼如下:

private org.springframework.data.redis.cache.RedisCacheConfigurationdetermineConfiguration(ClassLoader classLoader) {//如果配置了,就返回自定義的配置if (this.redisCacheConfiguration != null) {return this.redisCacheConfiguration;}//沒配置使用默認的配置Redis redisProperties = this.cacheProperties.getRedis();org.springframework.data.redis.cache.RedisCacheConfiguration config = org.springframework.data.redis.cache.RedisCacheConfiguration.defaultCacheConfig();config = config.serializeValuesWith(SerializationPair.fromSerializer(new JdkSerializationRedisSerializer(classLoader)));if (redisProperties.getTimeToLive() != null) {config = config.entryTtl(redisProperties.getTimeToLive());}if (redisProperties.getKeyPrefix() != null) {config = config.prefixKeysWith(redisProperties.getKeyPrefix());}if (!redisProperties.isCacheNullValues()) {config = config.disableCachingNullValues();}if (!redisProperties.isUseKeyPrefix()) {config = config.disableKeyPrefix();}return config; }

所以,我們也需要手動獲取 ttl、prefix 等屬性,直接仿照源碼就行,將配置類修改為如下:

@EnableCaching //開啟緩存 @Configuration @EnableConfigurationProperties(CacheProperties.class) //緩存的所有配置屬性都在這個類里 public class MyCacheConfig {@Beanpublic RedisCacheConfiguration redisCacheConfiguration(CacheProperties cacheProperties) {//獲取默認配置RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig();//指定鍵和值的序列化機制config = config.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer()));config = config.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new GenericJackson2JsonRedisSerializer()));//獲取配置文件的配置CacheProperties.Redis redisProperties = cacheProperties.getRedis();if (redisProperties.getTimeToLive() != null) {config = config.entryTtl(redisProperties.getTimeToLive());}if (redisProperties.getKeyPrefix() != null) {config = config.prefixKeysWith(redisProperties.getKeyPrefix());}if (!redisProperties.isCacheNullValues()) {config = config.disableCachingNullValues();}if (!redisProperties.isUseKeyPrefix()) {config = config.disableKeyPrefix();}return config;} }

?

總結(jié)

以上是生活随笔為你收集整理的缓存-SpringCache-自定义缓存配置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。