【发布时间】:2017-09-08 09:46:19
【问题描述】:
我想要一个缓存刷新策略,如果缓存值在 5 分钟后变得陈旧,我需要在第 4 分钟触发该值的刷新,以便新值在第 5 分钟可用,并且任何尝试在第 5 分钟既不需要等待加载,也不需要获取过时的数据。
使用 Guava,如果我同时使用 refreshAfterWrite(4, Minute) 和 expireAfterWrite(5, Minute) ,我可以解决经常查询的键的这个问题。但是,我很少有很少查询的键,对于它们来说,请求可能必须等待加载。
这个问题有解决办法吗?
【问题讨论】:
-
缓存保存瞬态的、可重新计算的数据,这些数据通常比完整数据集小得多。所以删除不常用的条目是理想的。如果您想要完整的数据集,您可能需要安排一个线程重新加载并交换地图。
标签: java caching guava ehcache