在Ehcache中设置刷新策略

时间:2010-05-10 09:10:52

标签: java ehcache oscache

是否可以在Ehcache中指定数据刷新政策?我目前正在将应用程序从OSCache迁移到Ehcache,除了设置timeToIdletimeToLive之外,我似乎无法找到任何方式来指定元素何时需要刷新。

我想要的是:在从缓存中访问元素时,检查它的相关资源,看它是否比缓存元素的lastUpdateTime更新。如果是,请刷新缓存;否则从缓存中提供内容。

在OSCache中,这是通过捕获NeedsRefreshException并为元素设置自定义刷新策略来完成的。我已经在文档中挖掘了一段时间,但是我无法找到任何方法或示例,说明如何在Ehcache中完成此任务。

任何帮助将不胜感激:)。

亚历

1 个答案:

答案 0 :(得分:1)

OSCache对NeedsRefreshException的看法确实存在缺陷。首先,这违背了为常规执行流程使用异常的建议(是的,我确实将过时的缓存命中视为正常流程);其次为此创造例外是非常昂贵的。

现在回到你的问题。如果我在你的位置,我会评估扩展net.sf.ehcache.Element的可能性,或者将您的输入值包装到能够检查timeToLive的对象中。

但主要问题是,为什么你需要这样做?如果要将对象放入缓存并指定TTL,为什么还要检查检索时的TTL?缓存应该能够在没有任何外部帮助的情况下驱逐对象。同样适用于手动删除条目的情况(例如,当对象已更改时)。也许我在这里错过了什么?

您要问的功能称为“直读”。如何执行此操作在此处说明:http://ehcache.org/documentation/concepts.html#read-through

- 另一个等待迁移到EHCache的不满意的OSCache用户:(