2016-11-18 45 views
0

我正在尝试使用Hazelcast 3.7.x(本文的最新版本)JCache提供程序和声明性配置(针对线程等的好处)。我需要为我的用例设置生存时间秒数,但不是最大空闲秒数。我只需要在没有更新完成的情况下将项目保存在缓存中(读入在缓存中生效)。如果我没有设置最大空闲秒数,它默认为0,并将永久保存在缓存中。如果我将它设置为小于TTL的值,它可能会停留在预期的时间,因为可能会发生读取。我看不到如何在hazelcast.xml文档中执行此操作。我可以使用具有不同过期策略的编程接口,但在初始化时会出现问题,如Hazelcast文档中所述。此外,如果他们可以为JCache提供者做到这一点,我会怀疑有一种方法可以在XML中完成,而不仅仅是记录在案。如何忽略最大空闲秒数,但在Hazelcast JCache中保留ttl?

如果这是不可能的,你有一个JCache代码与编程配置的线程问题照顾请发帖。如果只是单线程问题,创建电话我可以自己做。

感谢 小号

回答

0

既不最大空闲秒也不时到现场秒适用于Hazelcast xml配置的JCACHE配置。缓存元素只能有“到期策略工厂”,它只能有一个子元素“超时,到期策略”,并且有修改的选项,感动等的配置会是这样的:

<cache name="somecache"> 
     <key-type class-name="java.lang.String"/> 
     <value-type class-name="java.lang.String"/> 
     <statistics-enabled>true</statistics-enabled> 
     <management-enabled>true</management-enabled> 
     <read-through>false</read-through> 
     <write-through>false</write-through> 
     <in-memory-format>OBJECT</in-memory-format> 
     <expiry-policy-factory> 
      <timed-expiry-policy-factory expiry-policy-type="MODIFIED" duration-amount="5" time-unit="SECONDS"/> 
       </expiry-policy-factory> 
     <backup-count>1</backup-count> 
    </cache>