【问题标题】:Setting refresh-policies in Ehcache在 Ehcache 中设置刷新策略
【发布时间】:2010-05-10 09:10:52
【问题描述】:

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

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

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

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

亚历克斯

【问题讨论】:

    标签: java ehcache oscache


    【解决方案1】:

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

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

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

    您询问的功能称为通读。此处解释了如何执行此操作:http://ehcache.org/documentation/concepts.html#read-through

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

    【讨论】:

      猜你喜欢
      • 2017-02-24
      • 2023-04-04
      • 2011-11-29
      • 1970-01-01
      • 1970-01-01
      • 2017-06-25
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多