Ehcache中是否有用于指定数据刷新策略的策略?我目前正在将应用程序从OSCache迁移到Ehcache,除了设置timeToIdle和timeToLive之外,我似乎找不到任何方法来指定元素何时需要刷新。
我想要的是:在访问缓存中的一个元素时,检查它的相关资源,看看它的更新是否晚于缓存元素的lastUpdateTime。如果是,则刷新缓存;否则,从缓存中提供内容。
在OSCache中,这是通过捕获NeedsRefreshException并为元素设置自定义刷新策略来完成的。我已经在文档中钻研了一段时间,但我没有找到任何方法或示例来说明我如何在Ehcache中实现这一点。
任何帮助都将不胜感激:)。
亚历克斯
发布于 2010-05-10 17:35:32
OSCache关于NeedsRefreshException的想法是有缺陷的。首先,这违背了对通常的执行流程使用异常的建议(是的,我确实认为陈旧的缓存命中是正常的流程);其次,为此创建异常的代价非常高。
现在回到你的问题上。如果我处于你的位置,我会评估扩展net.sf.ehcache.Element的可能性,或者将你的入口值包装到一个能够检查timeToLive的对象中。
但主要的问题是,为什么你需要这样做?如果要将对象放入缓存并指定TTL,为什么还要在检索时检查TTL呢?缓存应该能够在没有任何外部帮助的情况下驱逐对象。这同样适用于手动删除条目的情况(例如,当对象已更改时)。也许我错过了什么?
您所询问的功能称为“通读”。如何做到这一点在这里解释:http://ehcache.org/documentation/concepts.html#read-through
--
另一个等待迁移到EHCache的不满意的OSCache用户:(
https://stackoverflow.com/questions/2801474
复制相似问题