2010-05-10 80 views
1

有没有在Ehcache中指定数据刷新策略?我目前正在将应用程序从OSCache迁移到Ehcache,除了设置timeToIdletimeToLive之外,我似乎找不到任何指定元素何时需要刷新的方法。在Ehcache中设置刷新策略

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

在OSCache中,这是通过捕获NeedsRefreshException并为元素设置自定义刷新策略完成的。我一直在研究文档一段时间,但是我无法找到任何方法或例子来说明我在Ehcache中如何实现这一点。

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

亚历

回答

1

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

现在回到你的问题。如果我在你的鞋子里,我会评估扩展net.sf.ehcache.Element的可能性,或者将你的输入值打包成能够检查timeToLive的对象。

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

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

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