每个 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)
我建议使用不同的缓存方案。
我们如何为任何特定缓存 (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)
我建议使用不同的缓存方案。