阿里巴巴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”如果要使用多后端缓存系统,可以在配置中设置多个“缓存区域”,此属性指定要使用的“缓存区域”的名称。
expireundefinedCache实例的名称,可选。如果您未指定,JetCache将自动生成一个。该名称用于显示统计信息,并在使用远程缓存时作为密钥前缀的一部分。如果两个@CreateCache具有相同namearea,他们将指向同一个Cache实例。
expireundefinedCache实例的默认过期时间。如果缺少属性值,则使用全局配置,如果未定义全局配置,则使用无穷大。
TIMEUNITTimeUnit.SECONDS指定时间单位 expire
cacheTypeCacheType.REMOTECache实例的类型。可能是CacheType.REMOTE,CacheType.LOCAL,CacheType.BOTH。当值为CacheType.BOTH时,使用两级缓存(本地+远程)。
localLimitundefinedcacheTypeCacheType.LOCAL或CacheType.BOTH 时,在本地内存中指定最大元素。如果缺少属性值,请使用全局配置,如果未定义全局配置,请使用100。
serialPolicyundefinedcacheTypeCacheType.REMOTE或CacheType.BOTH时,指定远程缓存的序列化策略。JetCache内置版本serialPolicy是SerialPolicy.JAVA或SerialPolicy.KRYO。如果缺少属性值,则使用全局配置,如果未定义全局配置,请使用SerialPolicy.JAVA
keyConvertorundefined指定密钥转换器。用于转换复杂的密钥对象。JetCache内置版本keyConvertor是KeyConvertor.FASTJSON或KeyConvertor.NONE。NONE表示不转换,FASTJSON将使用fastjson将key对象转换为字符串。如果缺少属性值,请使用全局配置。

属性@Cached类似于@CreateCache@Cached具有更多属性:

属性默认值描述
area“default”如果要使用多后端缓存系统,可以在配置中设置多个“缓存区域”,此属性指定要使用的“缓存区域”的名称。
nameundefinedCache实例的唯一名称area,可选。如果您未指定,JetCache将自动生成一个。该名称用于显示统计信息,并在使用远程缓存时作为密钥前缀的一部分。
keyundefined使用SpEL脚本指定密钥。如果未指定,JetCache将使用所有方法参数自动生成一个。
expireundefined到期时间。如果缺少属性值,则使用全局配置,如果未定义全局配置,则使用无穷大。
TIMEUNITTimeUnit.SECONDS指定时间单位 expire
cacheTypeCacheType.REMOTECache实例的类型。可能是CacheType.REMOTE,CacheType.LOCAL,CacheType.BOTH。值为CacheType.BOTH时,创建两级缓存(本地+远程)。
localLimitundefinedcacheTypeCacheType.LOCAL或CacheType.BOTH时,在本地内存中指定最大元素。如果缺少属性值,请使用全局配置,如果未定义全局配置,请使用100。
localExpireundefined 
serialPolicyundefinedcacheTypeCacheType.REMOTE或CacheType.BOTH时,指定远程缓存的序列化策略。JetCache内置版本serialPolicy是SerialPolicy.JAVA或SerialPolicy.KRYO。如果缺少属性值,请使用全局配置,如果未定义全局配置,请使用SerialPolicy.JAVA。
keyConvertorundefined指定密钥转换器。用于转换复杂的密钥对象。JetCache内置版本keyConvertor是KeyConvertor.FASTJSON或KeyConvertor.NONE。NONE表示不转换,FASTJSON将使用fastjson将key对象转换为字符串。如果缺少属性值,请使用全局配置。
enabledtrue指定是否启用方法缓存。如果设置为false,则可以使用在线程上下文中启用它CacheContext.enableCache(Supplier<T> callback)
cacheNullValuefalse指定是否应缓存空值。
conditionundefined表达式脚本用于调节方法缓存,当评估结果为false时不使用缓存。不能参考实际方法的返回值。
postConditionundefined表达式脚本用于调节方法缓存更新,当评估结果为假时,缓存更新操作被否决。在实际方法调用之后进行评估,因此我们可以在脚本中引用#result

@CacheInvalidate属性表:

属性默认值描述
area“default”如果要使用多后端缓存系统,可以在配置中设置多个“缓存区域”,此属性指定要使用的“缓存区域”的名称。
nameundefinedCache一个中该实例的唯一名称area。参考name@Cached。
keyundefined 
conditionundefined 

@CacheUpdate属性表:

属性默认值描述
area“default”如果要使用多后端缓存系统,可以在配置中设置多个“缓存区域”,此属性指定要使用的“缓存区域”的名称。

name

undefinedCache一个中该实例的唯一名称area。参考name@Cached。
keyundefined使用SpEL脚本指定密钥。
valueundefined使用SpEL脚本指定值。
conditionundefined表达式脚本用于调节缓存操作,当评估结果为false时,操作被否决。在实际方法调用之后进行评估,因此我们可以在脚本中引用#result

请注意,与@CacheUpdate和@CacheInvalidate相关的远程缓存操作可能会失败,因此设置'''expire'''属性非常重要。

@CacheRefresh属性表:

属性默认值描述
refreshundefined刷新的间隔
TIMEUNITTimeUnit.SECONDS时间单位
stopRefreshAfterLastAccessundefined如果指定,如果在指定的时间单位后未访问关联的键,则刷新操作将停止
refreshLockTimeout60秒当cacheType为REMOTE或BOTH时,分布式锁定超时

@CachePenetrationProtect:

此批注用于同步并发缓存加载操作。目前它只在每个单独的JVM中生效,也就是说,在一个JVM中,同一个键只有一个线程加载,其他线程等待结果。

 

 


版权声明:本文为HXNLYW原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。