2

我正在使用 Scala 版本的CaffeineScaffeine。我正在尝试填充缓存,以使其应在到期后重新加载所有值(测试中为 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 实现这个?

4

0 回答 0