每个 Namedcache 的 Coherence 分布式缓存过期

Coherence distributed cache expiry per Namedcache

我们如何为任何特定缓存 (NamedCache) 的每个缓存条目设置逐出 policy/expiry。例如,我可能配置了两个缓存,但是只想为其中一个缓存设置基于时间的逐出策略。

根据下面的配置文件,我需要为 "TEST2CACHE" 缓存设置逐出,比如 1 天后到期。怎么做?

任何指示都会有所帮助。谢谢

这是我的一致性配置示例 xml 文件-

    <cache-mapping>
        <cache-name>TEST1CACHE</cache-name>
        <scheme-name>MyDistributedCache</scheme-name>
    </cache-mapping>

    <!-- Application Configuration Cache -->
    <cache-mapping>
        <cache-name>TEST2CACHE</cache-name>
        <scheme-name>MyDistributedCache</scheme-name>
    </cache-mapping>

</caching-scheme-mapping>

<caching-schemes>
    <distributed-scheme>
        <scheme-name>MyDistributedCache</scheme-name>
        <service-name>MyDistributedCache</service-name>
        <lease-granularity>member</lease-granularity>
        <backing-map-scheme>
            <read-write-backing-map-scheme>
                <internal-cache-scheme>
                    <local-scheme>
                        <unit-calculator>BINARY</unit-calculator>
                    </local-scheme>
                </internal-cache-scheme>
                <cachestore-scheme>
                    <class-scheme>
                        <class-name>spring-bean:myCacheStore</class-name>
                        <init-params>
                            <init-param>
                                <param-name>setEntityName</param-name>
                                <param-value>{cache-name}</param-value>
                            </init-param>
                        </init-params>
                    </class-scheme>
                </cachestore-scheme>
            </read-write-backing-map-scheme>
        </backing-map-scheme>
        <autostart>true</autostart>
    </distributed-scheme>
</caching-schemes>

您正在为两个缓存使用相同的 'MyDistributedCache' 模式,因此如果您要添加逐出策略,它将影响两个缓存:

示例:

<local-scheme>
  <unit-calculator>BINARY</unit-calculator>
  <expiry-delay>10d</expiry-delay>
  <flush-delay>1d</flush-delay>
</local-scheme>

我敢打赌您不想创建两个几乎相同的方案,因此解决方案可能是使用 Scheme Inheritance Link to Coherence Documentation

至少您可以重用部分缓存。

另一个值得检查的选项是在 API 中使用过期,但我不确定 Coherence 是否真的会清理缓存。

NamedCache.put(Object oKey,
           Object oValue,
           long cMillis)

see JavaDoc

我建议使用不同的缓存方案。