java - 立即重新填充 EhCache,而不是等待读取

标签 java caching ehcache

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

为此,让一个线程在 TTL 到期时触发并用新值重新填充缓存听起来很合理,因此不会有任何读取等待。

有没有办法使用 Ehcache 来实现这一点?监听 OnElementExpired/Evicted 事件来重新填充缓存似乎是不可能的(当我收到该事件时,读取已经在等待)。

我想我可以使缓存本身永恒,并拥有自己的计划任务来重新填充,但随后我从 EhCache 中得不到任何东西,而不是我现在拥有的哑 map 。事情真的是这样吗?在这种情况下有没有办法让EhCache帮助我?

最佳答案

Ehcache 提供了一种通过计划刷新执行您想要的操作的方法。

为了使其与 Ehcache 一起工作,您需要做两件事:

  • 使用 cache loader - 即转向缓存读取模式。这是必需的,否则 Ehcache 不知道如何获取映射到键的数据。
  • 配置scheduled refresh - 这通过启动 quartz 调度程序实例来实现。

关于java - 立即重新填充 EhCache,而不是等待读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32214191/

相关文章:

Java 通信 API 问题

ios - 如何在 Meteor 中缓存图像?

reactjs - React Query 似乎没有缓存

caching - Azure 缓存辅助角色在几分钟后终止(超时)

java - 从 ehCache 卸载已编译的 XSLT (xsltExecutable)

grails - grails 中的缓存方法

java - 强制 BigDecimals 使用科学计数法

java - 使用多态成员将 Json 反序列化为 Java

java - 我可以在页面呈现之前获取 GWT 异步调用的结果吗?

java - 分布式环境下的defaultCache和cache问题(数据不一致)