以下是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中,同一个键只有一个线程加载,其他线程等待结果。