Infinispan 2LC:具有查询缓存中指定区域的实体缓存



我有一个 entity a,它被定义为 @Cacheable。而且我有查询缓存,在指定的高速缓存区域中加载entity A表示" regiona"。这是由setHint完成的,并启用了缓存。

至于wildfly中的设置,regionA配置为没有evictionexpiration为1天,其中entity缓存具有默认的evictionexpiration

        <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缓存不使用缓存区域特定设置?如何区分在特定高速缓存区域中存储的这些实体遵循特定区域的设置。

谢谢。

您有max-idle="14400000",这意味着如果查询在过去4个小时内未执行查询,则缓存结果到期。

最新更新