Caffeine 非阻塞 LoadingCache.get 用于昂贵的操作

问题描述 投票:0回答:1

我正在使用 Caffeine LoadingCache 来缓存昂贵的 IO 操作,这可能需要很长时间:

var cache = Caffeine
    .refreshAfterWrite(1, MINUTES)
    .build(loader);

并尝试使用

cache.get(k)
获取值。

当缓存条目存在,但已标记为刷新(超过 1 分钟),然后我调用

get
,它是否会阻塞并尝试从加载器加载,或者是否立即返回缓存值并加载到后台线程?

我尝试查看文档,但没有找到对此的明确解释。 刷新仅在您拨打

refresh
时提及,但在您拨打
get
时不提及。在我的推理中,由于
refreshAfterWrite
不会驱逐“过期”条目,因此它应该利用它并返回该缓存值而不会阻塞,但我没有找到确认。

java caffeine-cache
1个回答
0
投票

您链接的文档说

刷新键时仍会返回旧值(如果有),这与逐出相反,逐出会强制检索等待重新加载值。

这是指

get

© www.soinside.com 2019 - 2024. All rights reserved.