欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

springboot之redis cache TTL選項的使用

 更新時間:2023年07月26日 08:54:37   作者:sayyy  
這篇文章主要介紹了springboot之redis cache TTL選項的使用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

redis cache TTL 選項設置

  • 配置項: spring.cache.redis.time-to-live
  • 單位: 毫秒
  • 其它取值: java.time.Duration 可以識別的值
  • 默認值: 緩存不過期

獲取 TTL

@Service
public class xxx {
?? ?@Autowired
?? ?private CacheProperties cacheProperties;
?? ?public void xxx() {
?? ??? ?Duration ttl = this.cacheProperties.getRedis().getTimeToLive();
?? ??? ?if (null == ttl) {
?? ??? ??? ?// 未獲取到ttl,按照默認值處理
?? ??? ?} else {
?? ??? ??? ?// 獲取到ttl
?? ??? ??? ?// ttl.getSeconds()
?? ??? ?}
?? ?}
}

SPRINGBOOT redis cache TTL配置多緩存解決

SPRINGBOOT 緩存的 TTL

Spring為了兼容多Cache,注解@Cacheable沒有直接TTL參數(shù)。

  • springboot 配置文件可以全局配置TTL
  • 可以用@CacheEvict配合@Schedule清理
  • 可以自定義RedisCacheManage,指定TTL

配置多個RedisCacheManage解決方案

可以簡單配置2個redis cache,一個指定固定TTL,一個長期緩存。

不廢話,上代碼。

如果需要和其他系統(tǒng)公用緩存,用Jackson的RedisSerializer,這里直接jdk的序列化。

@Configuration
public class CacheConfig {
? ? @Bean
? ? public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
? ? ? ? RedisTemplate<String, Object> template = new RedisTemplate<>();
? ? ? ? template.setConnectionFactory(factory);
? ? ? ? template.setKeySerializer(new StringRedisSerializer());
? ? ? ? template.setHashKeySerializer(new StringRedisSerializer());
? ? ? ? template.setValueSerializer(new JdkSerializationRedisSerializer());
? ? ? ? template.setHashValueSerializer(new JdkSerializationRedisSerializer());
? ? ? ? return template;
? ? }
? ? @Bean(name = "RedisCacheManagerWithTTL")
? ? public RedisCacheManager cacheManagerWithTTL(RedisConnectionFactory factory) {
? ? ? ? RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig()
? ? ? ? ? ? ? ? .entryTtl(Duration.ofMinutes(2))
? ? ? ? ? ? ? ? .serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer()))
? ? ? ? ? ? ? ? .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new JdkSerializationRedisSerializer()))
? ? ? ? ? ? ? ? .disableCachingNullValues();
? ? ? ? RedisCacheManager.RedisCacheManagerBuilder builder = RedisCacheManager.RedisCacheManagerBuilder.fromConnectionFactory(factory);
? ? ? ? return builder.transactionAware().cacheDefaults(config).build();
? ? }
? ? @Bean
? ? @Primary
? ? public RedisCacheManager cacheManager(RedisConnectionFactory factory) {
? ? ? ? RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig()
? ? ? ? ? ? ? ? .serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer()))
? ? ? ? ? ? ? ? .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new JdkSerializationRedisSerializer()))
? ? ? ? ? ? ? ? .disableCachingNullValues();
? ? ? ? RedisCacheManager.RedisCacheManagerBuilder builder = RedisCacheManager.RedisCacheManagerBuilder.fromConnectionFactory(factory);
? ? ? ? return builder.transactionAware().cacheDefaults(config).build();
? ? }
}

使用

如果需要TTL,使用注解

@Cacheable(cacheNames = "YOUR:CACHE:NAME", cacheManager = "RedisCacheManagerWithTTL")

或者類上使用

@CacheConfig(cacheManager = "RedisCacheManagerWithTTL")

需要長期存儲的,使用 默認cacheManager即可。

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • spring?controller層引用service報空指針異常nullpointExceptio問題

    spring?controller層引用service報空指針異常nullpointExceptio問題

    這篇文章主要介紹了spring?controller層引用service報空指針異常nullpointExceptio問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • java 實現(xiàn)音樂播放器的簡單實例

    java 實現(xiàn)音樂播放器的簡單實例

    這篇文章主要介紹了java 實現(xiàn)音樂播放器的簡單實例的相關資料,希望通過本文能幫助到大家,實現(xiàn)這樣的功能,需要的朋友可以參考下
    2017-09-09
  • java實現(xiàn)簡單五子棋小游戲(1)

    java實現(xiàn)簡單五子棋小游戲(1)

    這篇文章主要為大家詳細介紹了java實現(xiàn)簡單五子棋小游戲的第一部分,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • java selenium使用瀏覽器調試工具實現(xiàn)方法

    java selenium使用瀏覽器調試工具實現(xiàn)方法

    本文主要介紹java selenium使用瀏覽器調試工具,這里整理了幾種瀏覽器的調試方法,有需要的小伙伴可以參考下
    2016-08-08
  • Java創(chuàng)建線程的七種方法總結(全網最全面)

    Java創(chuàng)建線程的七種方法總結(全網最全面)

    線程是Java中的基本執(zhí)行單元,它允許程序在同一時間執(zhí)行多個任務,下面這篇文章主要給大家總結介紹了關于Java創(chuàng)建線程的七種方法,文中通過實例代碼將這七種方法介紹的非常詳細,需要的朋友可以參考下
    2023-05-05
  • Spring?Boot自動配置的原理及@Conditional條件注解

    Spring?Boot自動配置的原理及@Conditional條件注解

    這篇文章主要介紹了Spring?Boot自動配置的原理及@Conditional條件注解,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,感興趣的朋友可以參考一下
    2022-07-07
  • 使用Java應用程序添加或刪除 PDF 中的附件

    使用Java應用程序添加或刪除 PDF 中的附件

    當我們在制作PDF文件或者PPT演示文稿的時候,為了讓自己的文件更全面詳細,就會在文件中添加附件,那么如何添加或刪除PDF中的附件呢,今天通過本文給大家詳細講解,需要的朋友參考下吧
    2023-01-01
  • Spring容器獲取Bean的9種方式總結

    Spring容器獲取Bean的9種方式總結

    本文為大家整理匯總了常見的獲取Bean的方式,并提供一些優(yōu)劣分析,方便大家在使用到時有更好的選擇,同時,也會為大家適當?shù)钠占昂屯卣挂恍┫嚓P知識,需要的可以參考一下
    2023-07-07
  • 淺談java調用Restful API接口的方式

    淺談java調用Restful API接口的方式

    這篇文章主要介紹了淺談java調用Restful API接口的方式,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • spring boot使用properties定義短信模板的方法教程

    spring boot使用properties定義短信模板的方法教程

    這篇文章主要給大家介紹了關于spring boot使用properties定義短信模板的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2018-01-01

最新評論