如何在缓存条目到期之前处理它们?

时间:2014-01-17 04:11:51

标签: caching infinispan

我想在缓存条目到期之前对其进行处理,这是我的用例:

我使用Cache<ClientID,DataForClient>(有10分钟到期,没有缓存存储)将数据放入我的应用服务器,  因此远程客户端可以在数据过期之前从应用服务器检索此数据。

在缓存中的数据到期之前,我想警告那些没有检索到他们数据的懒惰远程客户端,这样他们就可以在数据到期之前快点检索它们。

我如何实现这一目标?


  • 缩短过期时间并在CacheEntryRemovedEvent上添加Listener以重新添加已删除的元素是不正确的:客户端可能会尝试获取其数据 当监听器重新添加它时,删除和重新添加只是看起来不太好,而实现逻辑只重新添加一次会使这更复杂。

  • 假设有可能在到期顺序中获取缓存条目(密钥就足够了)(例如,那些接近其到期时间的条目在开头) 如果没有修改它的last_accessed_time(所以这不会干扰缓存机制来清理过期的条目),我会向懒惰的客户发送警告,快点来找他们的数据。

  • 我考虑过启用钝化,处理钝化和激活事件以及配置数据存储,但......这会使解决方案复杂化。

1 个答案:

答案 0 :(得分:0)

您可以创建另一个缓存Cache&lt; ClientID,Void&gt;条目的寿命较短。然后,您可以使用CacheEntryRemovedEvent上的侦听器来通知客户端。 您甚至可以通过CacheEntryCreatedEvent / CacheEntryModifiedEvent的另一个侦听器自动创建此记录。