例如,我想使用以下两个到期策略配置缓存:
示例代码如下(Apache Ignite版本1.5.0.final):
public IgniteCache<String, Object> getOrCreateCache(String cacheName) {
Ignite ignite = Ignition.ignite();
CacheConfiguration<String, Object> cacheCfg = new CacheConfiguration<String, Object>(cacheName);
cacheCfg.setExpiryPolicyFactory(TouchedExpiryPolicy.factoryOf(new Duration(TimeUnit.SECONDS, 10)));
cacheCfg.setExpiryPolicyFactory(CreatedExpiryPolicy.factoryOf(new Duration(TimeUnit.SECONDS, 30)));
IgniteCache<String, Object> igniteCache = ignite.getOrCreateCache(cacheCfg);
return igniteCache;
}
然而,问题是第二个到期政策将取代第一个到期政策。想知道我是否有任何方法可以配置Ignite缓存,以便缓存符合两个到期策略?谢谢。
顺便说一下,在EhCache中,我可以通过以下方式配置缓存来实现同样的目的:
<cache name="my-cache-name" ...
timeToIdleSeconds="10" timeToLiveSeconds="30"
...>
</cache>
参考文献:
答案 0 :(得分:4)
回答一般的JCache ExpiryPolicy,也许Apache Ignite中还有其他选项。
TouchedExpiryPolicy
使用相同的持续时间进行创建和更新。
您可以通过继承ExpiryPolicy
。
注意逻辑含义。访问后设置10秒到期,创建后设置30秒意味着:
可能你想要实现不同的东西。所以答案是:混合TTL和TTI的设计方式是不可能的。