我有entity
A,定义为@Cacheable
。我有查询缓存加载entity
A在指定的缓存区域下说" regionA"。这是通过setHint
并启用缓存来完成的。
对于wildfly
中的设置,regionA
配置为没有eviction
和expiration
为1天,其中entity
缓存具有默认{ {1}}和eviction
如下所示。
expiration
现在,如果我第一次执行,则没有查询缓存结果,因此运行SQL来获取实体。在第二次运行后,3rds似乎是从缓存 <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>
中获取的,因此可以。但是在18小时后,我尝试运行相同的查询,看起来再次运行查询。
但我想如果查询缓存配置为&#34; 1天&#34;到期,为什么它再次运行regionA
?是因为那个SQL
缓存到期了吗?那么entity
缓存不会采用特定于缓存区域的设置?
如何区分存储在特定缓存区域中的这些实体遵循区域特定设置。
感谢。
答案 0 :(得分:3)
您有max-idle="14400000"
这意味着如果查询在过去4小时内未执行,则缓存的结果将过期。