是否可以在Ehcache中指定数据刷新政策?我目前正在将应用程序从OSCache迁移到Ehcache,除了设置timeToIdle
和timeToLive
之外,我似乎无法找到任何方式来指定元素何时需要刷新。
我想要的是:在从缓存中访问元素时,检查它的相关资源,看它是否比缓存元素的lastUpdateTime
更新。如果是,请刷新缓存;否则从缓存中提供内容。
在OSCache中,这是通过捕获NeedsRefreshException
并为元素设置自定义刷新策略来完成的。我已经在文档中挖掘了一段时间,但是我无法找到任何方法或示例,说明如何在Ehcache中完成此任务。
任何帮助将不胜感激:)。
亚历
答案 0 :(得分:1)
OSCache对NeedsRefreshException
的看法确实存在缺陷。首先,这违背了为常规执行流程使用异常的建议(是的,我确实将过时的缓存命中视为正常流程);其次为此创造例外是非常昂贵的。
现在回到你的问题。如果我在你的位置,我会评估扩展net.sf.ehcache.Element
的可能性,或者将您的输入值包装到能够检查timeToLive
的对象中。
但主要问题是,为什么你需要这样做?如果要将对象放入缓存并指定TTL,为什么还要检查检索时的TTL?缓存应该能够在没有任何外部帮助的情况下驱逐对象。同样适用于手动删除条目的情况(例如,当对象已更改时)。也许我在这里错过了什么?
您要问的功能称为“直读”。如何执行此操作在此处说明:http://ehcache.org/documentation/concepts.html#read-through
- 另一个等待迁移到EHCache的不满意的OSCache用户:(