我正在使用 Caffeine LoadingCache 来缓存昂贵的 IO 操作,这可能需要很长时间:
var cache = Caffeine
.refreshAfterWrite(1, MINUTES)
.build(loader);
并尝试使用
cache.get(k)
获取值。
当缓存条目存在,但已标记为刷新(超过 1 分钟),然后我调用
get
,它是否会阻塞并尝试从加载器加载,或者是否立即返回缓存值并加载到后台线程?
我尝试查看文档,但没有找到对此的明确解释。 刷新仅在您拨打
refresh
时提及,但在您拨打get
时不提及。在我的推理中,由于 refreshAfterWrite
不会驱逐“过期”条目,因此它应该利用它并返回该缓存值而不会阻塞,但我没有找到确认。
您链接的文档说
刷新键时仍会返回旧值(如果有),这与逐出相反,逐出会强制检索等待重新加载值。
这是指
get
。