首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >急切地重新填充EhCache,而不是等待读取

急切地重新填充EhCache,而不是等待读取
EN

Stack Overflow用户
提问于 2015-08-25 21:13:14
回答 3查看 787关注 0票数 0

在我的场景中,获取新的(非缓存的)值是一项非常昂贵的操作,因此必须始终存在预计算的缓存值,而不是像EhCache所做的那样在读取时刷新它们。

因此,让线程在TTL到期时触发,用新值重新填充缓存是合理的,因此永远不会等待读取。

是否有一种使用Ehcache实现这一目标的方法?侦听OnElementExpired/逐出事件以重新填充缓存似乎是一种禁止(当我收到事件时,已经在等待读取)。

我想我可以使缓存本身永久化,并有我自己的计划任务,重新填充,但我没有从EhCache从哑巴地图,我现在有任何东西。真的是这样吗?在这种情况下没有办法让EhCache帮我吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-08-26 11:50:58

Ehcache提供了一种按计划进行刷新的方法。

您需要两件事才能在Ehcache中工作:

  • 使用缓存加载器 --即移动到缓存读取模式。这是必需的,否则Ehcache不知道如何获取映射到密钥的数据。
  • 配置计划刷新 --这是通过启动石英调度程序实例来实现的。
票数 1
EN

Stack Overflow用户

发布于 2015-08-25 21:39:53

看看RefreshAheadCache,由EHCache提供。

但是,我找不到任何使用它的例子,也找不到任何指标表明这是成熟的。

全班同学的评论是:

实现预读刷新的缓存装饰器。当缓存项到期前被访问并触发背景中值的重新加载时,就会提前读取。

这并不能直接解决问题,如下所述:

我的问题是如何在不等待读取触发缓存的情况下重新填充缓存

据我所知,没有标准的方法可以做到这一点。其原因是,过期不是基于计时器的。

(无耻)提示:由于我认为这是非常有用的,所以我在cache2k中实现了这一点。这个特性称为背景刷新,由CacheBuilder.backgroundRefresh(true)启用。

票数 1
EN

Stack Overflow用户

发布于 2015-08-25 22:31:41

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32214191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档