我正在使用 Scala 版本的Caffeine,Scaffeine。我正在尝试填充缓存,以使其应在到期后重新加载所有值(测试中为 10 秒)。我可能可以使用 Guava Suppliers.memoizeWithExpiration
,但我想利用后台异步加载数据的优势。我有以下片段:
val dummy = List()
val myCache: AsyncLoadingCache[String, String] =
Scaffeine()
.refreshAfterWrite(10.second) //test
.buildAsyncFuture(
loader = userId => client.getByUserId(userId),
allLoader = Some(dummy => client.getAllUsers),
reloadLoader = None)
我认为这allLoader
是出于此目的,但它在缓存构建期间仅调用一次,并且仅填充那些在“虚拟”列表中枚举键的值。
有一个类似的线程建议实现CacheLoader#loadAll
,但任何提示都会很好,如何在 Scala 中用 Scaffine 实现这个?