1

有没有在Ehcache中指定数据刷新策略?我目前正在将应用程序从OSCache迁移到 Ehcache,除了设置timeToIdletimeToLive.

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

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

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

亚历克斯

4

1 回答 1

1

OSCache 的想法NeedsRefreshException确实有缺陷。首先,这违背了在通常的执行流程中使用异常的建议(是的,我确实认为过时的缓存命中是正常的流程);其次为此创建异常非常昂贵。

现在回到你的问题。如果我站在你的立场上,我会评估扩展的可能性net.sf.ehcache.Element,或者将你的输入值包装到一个能够检查timeToLive.

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

您要询问的功能称为通读。如何做到这一点在这里解释:http: //ehcache.org/documentation/concepts.html#read-through

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

于 2010-05-10T09:35:32.020 回答