1

我想使用 Caffeine 进行缓存,并且需要后写。我想限制我写入数据库的次数。该文档谈到了回写缓存​​,因此应该是可能的,但是没有关于如何配置它的示例。我已经实现了一个CacheWriter,但我不明白如何将它配置为例如仅每 10 秒调用一次编写器(如果某些内容更改为缓存当然)。

4

1 回答 1

1

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

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

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

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

更新:

Wim Deblauwe 提供了一个使用 RxJava的好例子。

于 2016-04-27T16:55:52.270 回答