最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JetCache的配置和注解屬性的使用說明

 更新時間:2025年10月27日 10:53:25   作者:No8g攻城獅  
本文詳細介紹了JetCache的配置方法及各種注解的使用技巧,從YML配置文件入手,解析不同屬性的作用與意義,并對@Cached、@CacheUpdate、@CacheInvalidate等注解進行了解,感興趣的可以了解一下

一、配置說明

yml配置文件案例(如果沒使用springboot,直接配置GlobalCacheConfig是類似的,參考快速入門教程):

jetcache:
  statIntervalMinutes: 15
  areaInCacheName: false
  hidePackages: com.alibaba
  local:
    default:
      type: caffeine
      limit: 100
      keyConvertor: fastjson
      expireAfterWriteInMillis: 100000
    otherArea:
      type: linkedhashmap
      limit: 100
      keyConvertor: none
      expireAfterWriteInMillis: 100000
  remote:
    default:
      type: redis
      keyConvertor: fastjson
      valueEncoder: java
      valueDecoder: java
      poolConfig:
        minIdle: 5
        maxIdle: 20
        maxTotal: 50
      host: ${redis.host}
      port: ${redis.port}
    otherArea:
      type: redis
      keyConvertor: fastjson
      valueEncoder: kryo
      valueDecoder: kryo
      poolConfig:
        minIdle: 5
        maxIdle: 20
        maxTotal: 50
      host: ${redis.host}
      port: ${redis.port}

配置通用說明如下:

屬性默認值說明
jetcache.statIntervalMinutes0統(tǒng)計間隔,0表示不統(tǒng)計
jetcache.areaInCacheNametruejetcache-anno把cacheName作為遠程緩存key前綴,2.4.3以前的版本總是把areaName加在cacheName中,因此areaName也出現(xiàn)在key前綴中。2.4.4以后可以配置,為了保持遠程key兼容默認值為true,但是新項目的話false更合理些。
jetcache.hiddenPackages@Cached和@CreateCache自動生成name的時候,為了不讓name太長,hiddenPackages指定的包名前綴被截掉
jetcache.[local|remote].${area}.type緩存類型。tair、redis為當前支持的遠程緩存;linkedhashmap、caffeine為當前支持的本地緩存類型
jetcache.[local|remote].${area}.keyConvertorkey轉(zhuǎn)換器的全局配置,當前只有一個已經(jīng)實現(xiàn)的keyConvertor:fastjson。僅當使用@CreateCache且緩存類型為LOCAL時可以指定為none,此時通過equals方法來識別key。方法緩存必須指定keyConvertor
jetcache.[local|remote].${area}.valueEncoderjava序列化器的全局配置。僅remote類型的緩存需要指定,可選java和kryo
jetcache.[local|remote].${area}.valueDecoderjava序列化器的全局配置。僅remote類型的緩存需要指定,可選java和kryo
jetcache.[local|remote].${area}.limit100每個緩存實例的最大元素的全局配置,僅local類型的緩存需要指定。注意是每個緩存實例的限制,而不是全部,比如這里指定100,然后用@CreateCache創(chuàng)建了兩個緩存實例(并且注解上沒有設置localLimit屬性),那么每個緩存實例的限制都是100
jetcache.[local|remote].${area}.expireAfterWriteInMillis無窮大以毫秒為單位指定超時時間的全局配置(以前為defaultExpireInMillis)
jetcache.local.${area}.expireAfterAccessInMillis0需要jetcache2.2以上,以毫秒為單位,指定多長時間沒有訪問,就讓緩存失效,當前只有本地緩存支持。0表示不使用這個功能。

上表中${area}對應@Cached和@CreateCache的area屬性。注意如果注解上沒有指定area,默認值是"default"。

關于緩存的超時時間,有多個地方指定,澄清說明一下:

  1. put等方法上指定了超時時間,則以此時間為準
  2. put等方法上未指定超時時間,使用Cache實例的默認超時時間
  3. Cache實例的默認超時時間,通過在@CreateCache和@Cached上的expire屬性指定,如果沒有指定,使用yml中定義的全局配置,例如@Cached(cacheType=local)使用jetcache.local.default.expireAfterWriteInMillis,如果仍未指定則是無窮大

二、注解屬性說明

JetCache方法緩存和SpringCache比較類似,它原生提供了TTL支持,以保證最終一致,并且支持二級緩存。JetCache2.4以后支持基于注解的緩存更新和刪除。

在spring環(huán)境下,使用@Cached注解可以為一個方法添加緩存,@CacheUpdate用于更新緩存,@CacheInvalidate用于移除緩存元素。注解可以加在接口上也可以加在類上,加注解的類必須是一個spring bean,例如:

public interface UserService {
    @Cached(name="userCache.", key="#userId", expire = 3600)
    User getUserById(long userId);

    @CacheUpdate(name="userCache.", key="#user.userId", value="#user")
    void updateUser(User user);

    @CacheInvalidate(name="userCache.", key="#userId")
    void deleteUser(long userId);
}

key使用Spring的SpEL腳本來指定。如果要使用參數(shù)名(比如這里的key="#userId"),項目編譯設置target必須為1.8格式,并且指定javac的-parameters參數(shù),否則就要使用key="args[0]"這樣按下標訪問的形式。

@CacheUpdate和@CacheInvalidate的name和area屬性必須和@Cached相同,name屬性還會用做cache的key前綴。

@Cached注解和@CreateCache的屬性非常類似,但是多幾個:

屬性默認值說明
area“default”如果在配置中配置了多個緩存area,在這里指定使用哪個area
name未定義指定緩存的唯一名稱,不是必須的,如果沒有指定,會使用類名+方法名。name會被用于遠程緩存的key前綴。另外在統(tǒng)計中,一個簡短有意義的名字會提高可讀性。
key未定義使用SpEL指定key,如果沒有指定會根據(jù)所有參數(shù)自動生成。
expire未定義超時時間。如果注解上沒有定義,會使用全局配置,如果此時全局配置也沒有定義,則為無窮大
timeUnitTimeUnit.SECONDS指定expire的單位
cacheTypeCacheType.REMOTE緩存的類型,包括CacheType.REMOTE、CacheType.LOCAL、CacheType.BOTH。如果定義為BOTH,會使用LOCAL和REMOTE組合成兩級緩存
localLimit未定義如果cacheType為LOCAL或BOTH,這個參數(shù)指定本地緩存的最大元素數(shù)量,以控制內(nèi)存占用。如果注解上沒有定義,會使用全局配置,如果此時全局配置也沒有定義,則為100
localExpire未定義僅當cacheType為BOTH時適用,為內(nèi)存中的Cache指定一個不一樣的超時時間,通常應該小于expire
serialPolicy未定義指定遠程緩存的序列化方式??蛇x值為SerialPolicy.JAVA和SerialPolicy.KRYO。如果注解上沒有定義,會使用全局配置,如果此時全局配置也沒有定義,則為SerialPolicy.JAVA
keyConvertor未定義指定KEY的轉(zhuǎn)換方式,用于將復雜的KEY類型轉(zhuǎn)換為緩存實現(xiàn)可以接受的類型,當前支持KeyConvertor.FASTJSON和KeyConvertor.NONE。NONE表示不轉(zhuǎn)換,F(xiàn)ASTJSON可以將復雜對象KEY轉(zhuǎn)換成String。如果注解上沒有定義,會使用全局配置。
enabledtrue是否激活緩存。例如某個dao方法上加緩存注解,由于某些調(diào)用場景下不能有緩存,所以可以設置enabled為false,正常調(diào)用不會使用緩存,在需要的地方可使用CacheContext.enableCache在回調(diào)中激活緩存,緩存激活的標記在ThreadLocal上,該標記被設置后,所有enable=false的緩存都被激活
cacheNullValuefalse當方法返回值為null的時候是否要緩存
condition未定義使用SpEL指定條件,如果表達式返回true的時候才去緩存中查詢
postCondition未定義使用SpEL指定條件,如果表達式返回true的時候才更新緩存,該評估在方法執(zhí)行后進行,因此可以訪問到#result

@CacheInvalidate注解說明:

屬性默認值說明
area“default”如果在配置中配置了多個緩存area,在這里指定使用哪個area,指向?qū)腀Cached定義。
name未定義指定緩存的唯一名稱,指向?qū)腀Cached定義。
key未定義使用SpEL指定key
condition未定義使用SpEL指定條件,如果表達式返回true才執(zhí)行刪除,可訪問方法結(jié)果#result

@CacheUpdate注解說明:

屬性默認值說明
area“default”如果在配置中配置了多個緩存area,在這里指定使用哪個area,指向?qū)腀Cached定義。
name未定義指定緩存的唯一名稱,指向?qū)腀Cached定義。
key未定義使用SpEL指定key
value未定義使用SpEL指定value
condition未定義使用SpEL指定條件,如果表達式返回true才執(zhí)行更新,可訪問方法結(jié)果#result

使用@CacheUpdate和@CacheInvalidate的時候,相關的緩存操作可能會失敗(比如網(wǎng)絡IO錯誤),所以指定緩存的超時時間是非常重要的。

@CacheRefresh注解說明:

屬性默認值說明
refresh未定義刷新間隔
timeUnitTimeUnit.SECONDS時間單位
stopRefreshAfterLastAccess未定義指定該key多長時間沒有訪問就停止刷新,如果不指定會一直刷新
refreshLockTimeout60秒類型為BOTH/REMOTE的緩存刷新時,同時只會有一臺服務器在刷新,這臺服務器會在遠程緩存放置一個分布式鎖,此配置指定該鎖的超時時間

@CachePenetrationProtect注解:

當緩存訪問未命中的情況下,對并發(fā)進行的加載行為進行保護。 當前版本實現(xiàn)的是單JVM內(nèi)的保護,即同一個JVM中同一個key只有一個線程去加載,其它線程等待結(jié)果。

對于以上未定義默認值的參數(shù),如果沒有指定,將使用yml中指定的全局配置,全局配置請參考配置說明。

到此這篇關于JetCache的配置和注解屬性的使用說明的文章就介紹到這了,更多相關JetCache 配置和注解屬性內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • SpringBoot三種打包方法舉例詳解

    SpringBoot三種打包方法舉例詳解

    這篇文章主要給大家介紹了關于SpringBoot三種打包方法的相關資料,Spring Boot是一個開發(fā)框架,目的是簡化Spring應用的初始搭建過程和開發(fā)過程,文中提供了3種打包方法,需要的朋友可以參考下
    2023-12-12
  • Java 在PPT中創(chuàng)建散點圖的實現(xiàn)示例

    Java 在PPT中創(chuàng)建散點圖的實現(xiàn)示例

    本文將以Java代碼示例展示如何在PPT幻燈片中創(chuàng)建散點圖表。文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • Java使用LinkedHashMap進行分數(shù)排序

    Java使用LinkedHashMap進行分數(shù)排序

    這篇文章主要介紹了Java使用LinkedHashMap進行分數(shù)排序的相關代碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • java實現(xiàn)屏蔽詞功能

    java實現(xiàn)屏蔽詞功能

    這篇文章主要介紹了java實現(xiàn)屏蔽詞功能,類似貼吧里面屏蔽各種用戶的發(fā)帖內(nèi)容,感興趣的小伙伴們可以參考一下
    2015-12-12
  • Springboot常用注解及配置文件加載順序詳解

    Springboot常用注解及配置文件加載順序詳解

    這篇文章主要介紹了Springboot常用注解及配置文件加載順序,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-11-11
  • Shell腳本管理Java應用程序的高效方法

    Shell腳本管理Java應用程序的高效方法

    在軟件開發(fā)中,管理和監(jiān)控 Java 應用程序的運行狀態(tài)變得愈加重要,本文將分享一個自用的簡單但高效的 Shell 腳本,幫助輕松管理 JAR 包的啟動、停止和日志管理,需要的朋友可以參考下
    2024-09-09
  • 總結(jié)Java常用排序算法

    總結(jié)Java常用排序算法

    在本文里我們給大家整理了關于Java常用排序算法以及實例代碼分析,需要的朋友們跟著學習下。
    2019-03-03
  • Java SpringBoot實現(xiàn)文件上傳功能的示例代碼

    Java SpringBoot實現(xiàn)文件上傳功能的示例代碼

    這篇文章主要介紹了如何利用Java SpringBoot實現(xiàn)文件上傳功能,文中的示例代碼講解詳細,對我們學習有一定幫助,需要的可以參考一下
    2022-03-03
  • SpringBoot中各個層級結(jié)構的具體實現(xiàn)

    SpringBoot中各個層級結(jié)構的具體實現(xiàn)

    在SpringBoot項目中,常常會把代碼文件放入不同的包中,本文主要介紹了SpringBoot中各個層級結(jié)構的具體實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2024-05-05
  • 使用springboot實現(xiàn)上傳文件時校驗文件是否有病毒

    使用springboot實現(xiàn)上傳文件時校驗文件是否有病毒

    在SpringBoot中實現(xiàn)文件上傳時的病毒校驗,可以使用ClamAV、Metascan或VirusTotal等工具,這些工具通過掃描上傳的文件,可以有效地檢測和阻止惡意軟件的傳播,安裝和配置ClamAV服務的步驟如下:下載并安裝ClamAV二進制文件,配置clamd.conf文件
    2025-01-01

最新評論

离岛区| 综艺| 宁晋县| 台湾省| 文安县| 英吉沙县| 夹江县| 广丰县| 平乐县| 深圳市| 临西县| 云林县| 文登市| 镇坪县| 调兵山市| 伽师县| 花莲市| 天祝| 宜宾市| 龙山县| 内黄县| 资源县| 醴陵市| 邯郸县| 永善县| 连平县| 蒙城县| 靖宇县| 高州市| 长武县| 宁安市| 库伦旗| 醴陵市| 耒阳市| 中山市| 剑河县| 浙江省| 抚州市| 岑巩县| 芦山县| 文昌市|