繁体   English   中英

如何使用多个到期策略配置Apache Ignite缓存

[英]How to configure Apache Ignite cache with multiple expiry policies

例如,我要使用以下两个到期策略配置缓存:

  • TouchedExpiryPolicy
  • CreatedExpiryPolicy

示例代码如下(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>

参考文献:

回答一般的JCache ExpiryPolicy,也许Apache Ignite中还有其他选项。

TouchedExpiryPolicy使用相同的持续时间进行创建和更新。

您可以通过将ExpiryPolicy子类化来设置单个时间。

注意逻辑含义。 设置访问后10秒过期和创建后30秒设置为例如:

  • 项目已创建,如果未访问,则在缓存中保留30秒
  • 项目已创建,在创建后5秒钟被访问,项目在创建后15秒钟到期(访问后10秒钟)

可能您想实现一些不同的目标。 因此,答案是:不能将TTL和TTI混合使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM