1

我正在尝试使用 Hazelcast 3.7.x(撰写本文时的最新版本)JCache 提供程序和声明式配置(以获得线程等的好处)。我只需要为我的用例设置 time-to-live-seconds 而不是 max-idle-seconds。仅当没有完成更新(在缓存中的条目生命周期内发生读取)时,我才需要将项目保留在缓存中。如果我不设置 max-idle-seconds 它默认为 0 并且将条目永久保存在缓存中。如果我将它设置为小于 TTL 的值,它可能会超过预期的时间,因为可能会发生读取。我在 hazelcast.xml 文档中看不到如何做到这一点。我可以使用具有不同到期策略的编程接口,但是会出现 Hazelcast 文档中记录的初始化问题。此外,如果他们能为 JCache 提供者做到这一点,我'

如果这是不可能的,并且您有一个 JCache 代码可以与编程配置一起使用,并注意线程问题,请发布。如果只是单线程创建调用的问题,我可以自己做。

谢谢小号

4

1 回答 1

1

max-idle-seconds 和 time-to-live-seconds 都不适用于 Hazelcast xml 配置中的 Jcache 配置。缓存元素只能有“expiry-policy-factory”,它只能有一个子元素“timed-expiry-policy”,并且可以选择修改、触摸等。配置如下:

<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>
于 2016-11-21T22:25:16.833 回答