【发布时间】:2017-10-03 16:57:19
【问题描述】:
我有一个entity A,它被定义为@Cacheable。我有查询缓存加载指定缓存区域下的entity A 说“regionA”。这是通过setHint 和启用缓存来完成的。
至于wildfly中的设置,regionA配置为没有eviction和expiration为1天,而entity缓存默认eviction和expiration如下.
<local-cache name="entity">
<transaction mode="NON_XA"/>
<eviction strategy="LRU" max-entries="10000"/>
<expiration max-idle="1000000"/>
</local-cache>
<local-cache name="local-query">
<eviction strategy="LRU" max-entries="10000"/>
<expiration max-idle="100000"/>
</local-cache>
<local-cache name="regionA" statistics-enabled="true">
<eviction strategy="NONE" max-entries="-1"/>
<expiration lifespan="86400000" max-idle="14400000"/>
</local-cache>
现在,如果我第一次执行,没有查询缓存结果,因此运行 SQL 来获取实体。后来第二次运行,第三次似乎是从缓存regionA 中取出的,因此没问题。但在 18 小时后,我尝试运行相同的查询,看起来查询再次运行。
但我想如果查询缓存配置为“1天”到期,为什么它会再次运行SQL?是因为entity 缓存到那时就过期了吗?所以entity 缓存不采用缓存区域特定设置?
如何区分存储在特定缓存区域中的这些实体遵循区域特定设置。
谢谢。
【问题讨论】:
标签: infinispan wildfly-10 second-level-cache