阿里巴巴Jetcache配置詳解

以下是Spring Boot中yml配置文件的示例:

jetcache:
  statIntervalMinutes: 15  #指定統計間隔,以分鐘爲單位。0表示沒有統計數據。
  areaInCacheName: false   #jetcache-anno使用緩存名稱作爲遠程緩存密鑰前綴,在jetcache 2.4.3 
                          #和之前的版本中,它總是在緩存名稱中添加區域名稱,從2.4.4開始我們有這 
                          #個配置項,爲兼容原因,默認值爲true。然而,虛假價值對於新項目更合理。
  hidePackages: com.alibaba #包名稱以(hiddenPackages)開始的將在生成的緩存
                            #實例名稱中被截斷
  local:
    default:
      type: caffeine        #後端緩存系統的類型。遠程緩存:tair,redis,
                            #本地緩存:linkedhashmap,caffeine。
      limit: 100            #每個Cache實例的本地內存中的最大限制數。只有本地緩存​​需要它。
      keyConvertor: fastjson#指定密鑰轉換器。用於轉換複雜的密鑰對象。
                            #JetCache內置版本keyConvertor是KeyConvertor.FASTJSON或
                            #KeyConvertor.NONE。NONE表示不轉換,FASTJSON將使用fastjson將                                                
                            #key對象轉換爲字符串。如果缺少屬性值,請使用全局配置。

      expireAfterWriteInMillis: 100000   #寫入的全局配置到期時間,以毫秒爲單位。
      expireAfterAccessInMillis: 100000  #讀取的全局配置到期時間,以毫秒爲單位。
                                         #需要jetcache2.2 +,只有本地緩存​​支持此功能。
                                         #0表示禁用讀取過期功能
    otherArea:
      type: linkedhashmap
      limit: 100
      keyConvertor: none
      expireAfterWriteInMillis: 100000
      expireAfterAccessInMillis: 100000
  remote:
    default:
      type: redis
      keyConvertor: fastjson
      valueEncoder: java    #全局配置值編碼器只需要遠程緩存。兩個內置valueEncoder是java和kryo
      valueDecoder: java    #全局配置值解碼器只需要遠程緩存。兩個內置valueEncoder是java和kryo
      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}

@CreateCache的屬性

屬性 默認值 描述
area “default” 如果要使用多後端緩存系統,可以在配置中設置多個“緩存區域”,此屬性指定要使用的“緩存區域”的名稱。
expire undefined Cache實例的名稱,可選。如果您未指定,JetCache將自動生成一個。該名稱用於顯示統計信息,並在使用遠程緩存時作爲密鑰前綴的一部分。如果兩個@CreateCache具有相同namearea,他們將指向同一個Cache實例。
expire undefined Cache實例的默認過期時間。如果缺少屬性值,則使用全局配置,如果未定義全局配置,則使用無窮大。
TIMEUNIT TimeUnit.SECONDS 指定時間單位 expire
cacheType CacheType.REMOTE Cache實例的類型。可能是CacheType.REMOTE,CacheType.LOCAL,CacheType.BOTH。當值爲CacheType.BOTH時,使用兩級緩存(本地+遠程)。
localLimit undefined cacheTypeCacheType.LOCAL或CacheType.BOTH 時,在本地內存中指定最大元素。如果缺少屬性值,請使用全局配置,如果未定義全局配置,請使用100。
serialPolicy undefined cacheTypeCacheType.REMOTE或CacheType.BOTH時,指定遠程緩存的序列化策略。JetCache內置版本serialPolicy是SerialPolicy.JAVA或SerialPolicy.KRYO。如果缺少屬性值,則使用全局配置,如果未定義全局配置,請使用SerialPolicy.JAVA
keyConvertor undefined 指定密鑰轉換器。用於轉換複雜的密鑰對象。JetCache內置版本keyConvertor是KeyConvertor.FASTJSON或KeyConvertor.NONE。NONE表示不轉換,FASTJSON將使用fastjson將key對象轉換爲字符串。如果缺少屬性值,請使用全局配置。

屬性@Cached類似於@CreateCache@Cached具有更多屬性:

屬性 默認值 描述
area “default” 如果要使用多後端緩存系統,可以在配置中設置多個“緩存區域”,此屬性指定要使用的“緩存區域”的名稱。
name undefined Cache實例的唯一名稱area,可選。如果您未指定,JetCache將自動生成一個。該名稱用於顯示統計信息,並在使用遠程緩存時作爲密鑰前綴的一部分。
key undefined 使用SpEL腳本指定密鑰。如果未指定,JetCache將使用所有方法參數自動生成一個。
expire undefined 到期時間。如果缺少屬性值,則使用全局配置,如果未定義全局配置,則使用無窮大。
TIMEUNIT TimeUnit.SECONDS 指定時間單位 expire
cacheType CacheType.REMOTE Cache實例的類型。可能是CacheType.REMOTE,CacheType.LOCAL,CacheType.BOTH。值爲CacheType.BOTH時,創建兩級緩存(本地+遠程)。
localLimit undefined cacheTypeCacheType.LOCAL或CacheType.BOTH時,在本地內存中指定最大元素。如果缺少屬性值,請使用全局配置,如果未定義全局配置,請使用100。
localExpire undefined  
serialPolicy undefined cacheTypeCacheType.REMOTE或CacheType.BOTH時,指定遠程緩存的序列化策略。JetCache內置版本serialPolicy是SerialPolicy.JAVA或SerialPolicy.KRYO。如果缺少屬性值,請使用全局配置,如果未定義全局配置,請使用SerialPolicy.JAVA。
keyConvertor undefined 指定密鑰轉換器。用於轉換複雜的密鑰對象。JetCache內置版本keyConvertor是KeyConvertor.FASTJSON或KeyConvertor.NONE。NONE表示不轉換,FASTJSON將使用fastjson將key對象轉換爲字符串。如果缺少屬性值,請使用全局配置。
enabled true 指定是否啓用方法緩存。如果設置爲false,則可以使用在線程上下文中啓用它CacheContext.enableCache(Supplier<T> callback)
cacheNullValue false 指定是否應緩存空值。
condition undefined 表達式腳本用於調節方法緩存,當評估結果爲false時不使用緩存。不能參考實際方法的返回值。
postCondition undefined 表達式腳本用於調節方法緩存更新,當評估結果爲假時,緩存更新操作被否決。在實際方法調用之後進行評估,因此我們可以在腳本中引用#result

@CacheInvalidate屬性表:

屬性 默認值 描述
area “default” 如果要使用多後端緩存系統,可以在配置中設置多個“緩存區域”,此屬性指定要使用的“緩存區域”的名稱。
name undefined Cache一箇中該實例的唯一名稱area。參考name@Cached。
key undefined  
condition undefined  

@CacheUpdate屬性表:

屬性 默認值 描述
area “default” 如果要使用多後端緩存系統,可以在配置中設置多個“緩存區域”,此屬性指定要使用的“緩存區域”的名稱。

name

undefined Cache一箇中該實例的唯一名稱area。參考name@Cached。
key undefined 使用SpEL腳本指定密鑰。
value undefined 使用SpEL腳本指定值。
condition undefined 表達式腳本用於調節緩存操作,當評估結果爲false時,操作被否決。在實際方法調用之後進行評估,因此我們可以在腳本中引用#result

請注意,與@CacheUpdate和@CacheInvalidate相關的遠程緩存操作可能會失敗,因此設置'''expire'''屬性非常重要。

@CacheRefresh屬性表:

屬性 默認值 描述
refresh undefined 刷新的間隔
TIMEUNIT TimeUnit.SECONDS 時間單位
stopRefreshAfterLastAccess undefined 如果指定,如果在指定的時間單位後未訪問關聯的鍵,則刷新操作將停止
refreshLockTimeout 60秒 當cacheType爲REMOTE或BOTH時,分佈式鎖定超時

@CachePenetrationProtect:

此批註用於同步併發緩存加載操作。目前它只在每個單獨的JVM中生效,也就是說,在一個JVM中,同一個鍵只有一個線程加載,其他線程等待結果。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章