如何使用 Caffeine 缓存配置 write behind?

How to configure write behind with Caffeine cache?

我想使用 Caffeine 进行缓存,我需要有一个 write-behind。我想限制写入数据库的次数。 documentation 谈到 write-back cache 所以它应该是可能的,但是没有关于如何配置它的例子。我已经实现了一个 CacheWriter,但我不明白如何将它配置为例如每 10 秒只调用一次编写器(当然,如果某些内容更改为缓存)。

CacheWriter 是一个扩展点,文档描述了它可能有意义的用例。这些案例超出了库的范围,如果改为实施可能会过于严格。

在正常的写操作(但不是计算)期间自动调用编写器。这确保观察到给定键的更改顺序。对于后写,编写器会将条目添加到异步处理的队列中,例如批处理操作。

在实施此功能时您可能需要考虑,

  • 合并更新(例如收集到 LinkedHashMap
  • 如果超过阈值大小,则在定期回写之前执行批处理
  • 如果操作尚未刷新,则从后写缓冲区加载(这避免了不一致的视图,例如由于逐出)
  • 根据外部资源的特性处理重试、速率限制和条带化

更新:

Wim Deblauwe 提供了一个很好的 example 使用 RxJava。