我想在缓存条目到期之前对其进行处理,这是我的用例:
我使用Cache<ClientID,DataForClient>
(有10分钟到期,没有缓存存储)将数据放入我的应用服务器,
因此远程客户端可以在数据过期之前从应用服务器检索此数据。
在缓存中的数据到期之前,我想警告那些没有检索到他们数据的懒惰远程客户端,这样他们就可以在数据到期之前快点检索它们。
我如何实现这一目标?
缩短过期时间并在CacheEntryRemovedEvent
上添加Listener
以重新添加已删除的元素是不正确的:客户端可能会尝试获取其数据
当监听器重新添加它时,删除和重新添加只是看起来不太好,而实现逻辑只重新添加一次会使这更复杂。
假设有可能在到期顺序中获取缓存条目(密钥就足够了)(例如,那些接近其到期时间的条目在开头)
如果没有修改它的last_accessed_time
(所以这不会干扰缓存机制来清理过期的条目),我会向懒惰的客户发送警告,快点来找他们的数据。
我考虑过启用钝化,处理钝化和激活事件以及配置数据存储,但......这会使解决方案复杂化。
答案 0 :(得分:0)
您可以创建另一个缓存Cache&lt; ClientID,Void&gt;条目的寿命较短。然后,您可以使用CacheEntryRemovedEvent上的侦听器来通知客户端。 您甚至可以通过CacheEntryCreatedEvent / CacheEntryModifiedEvent的另一个侦听器自动创建此记录。