我正在从Ehcache2.X过渡到Ehcache3.3.1,我找不到在运行时获取缓存的生存时间配置的方法。以前我用过:
cache.getCacheConfiguration().getTimeToLiveSeconds()
现在看起来我需要做类似的事情:
cache.getRuntimeConfiguration().getExpiry().getExpiryForCreation().getLength()
但是,getExpiryForCreation()
需要特定元素的键值对,并且似乎返回该元素的持续时间。
我是否遗漏了API或文档中的内容?
答案 0 :(得分:1)
我将在这里发布与ehcache邮件列表相同的答案。
到期实施可以非常动态,并使用给定的缓存密钥和值选择到期时间。
如果你知道你做了类似的事情
Expirations.timeToLiveExpiration(Duration.of(20, TimeUnit.SECONDS))
然后,创造它,它将不会是动态的。所以你可以做到
cache.getRuntimeConfiguration().getExpiry().getExpiryForCreation(null, null)
在创建后获取缓存条目的持续时间。
如果您想要动态更改TTL,则可能需要提供自己的Expiry
实现(不是很难)。使用TTL的setter。
但是,新值仅适用于新添加的条目。现有条目不会更改其TTL。这是因为我们计算添加条目时的到期时间戳。而不是一直重新应用持续时间。出于性能原因。