以下是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 具有相同name 和area ,他們將指向同一個Cache 實例。 |
expire | undefined | 此Cache 實例的默認過期時間。如果缺少屬性值,則使用全局配置,如果未定義全局配置,則使用無窮大。 |
TIMEUNIT | TimeUnit.SECONDS | 指定時間單位 expire |
cacheType | CacheType.REMOTE | Cache 實例的類型。可能是CacheType.REMOTE,CacheType.LOCAL,CacheType.BOTH。當值爲CacheType.BOTH時,使用兩級緩存(本地+遠程)。 |
localLimit | undefined | 當cacheType CacheType.LOCAL或CacheType.BOTH 時,在本地內存中指定最大元素。如果缺少屬性值,請使用全局配置,如果未定義全局配置,請使用100。 |
serialPolicy | undefined | 當cacheType CacheType.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 | 當cacheType CacheType.LOCAL或CacheType.BOTH時,在本地內存中指定最大元素。如果缺少屬性值,請使用全局配置,如果未定義全局配置,請使用100。 |
localExpire | undefined | |
serialPolicy | undefined | 當cacheType CacheType.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中,同一個鍵只有一個線程加載,其他線程等待結果。