我们如何为任何特定缓存(NamedCache)的每个缓存条目设置驱逐策略/到期时间。例如,我可能配置了两个缓存,但是只想根据时间为其中一个缓存设置驱逐策略。
根据下面的配置文件,我要求仅为“TEST2CACHE”缓存设置驱逐,比如1天后到期。怎么做?
任何指针都会有所帮助。感谢。
这里是我的coherence config 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>
答案 0 :(得分:1)
您正在为两个缓存使用相同的“MyDistributedCache”架构,因此如果您要添加驱逐策略,它将影响它们:
示例:
<local-scheme>
<unit-calculator>BINARY</unit-calculator>
<expiry-delay>10d</expiry-delay>
<flush-delay>1d</flush-delay>
</local-scheme>
我敢打赌你不想创建两个几乎相同的方案,所以解决方案可能是使用方案继承 Link to Coherence Documentation
至少你可以重用部分缓存。
另一个值得检查的选项是在API中使用expiration,但我不确定Coherence是否会实际清理缓存。
NamedCache.put(Object oKey,
Object oValue,
long cMillis)
我建议使用不同的缓存方案。