我想使用 Caffeine 进行缓存,并且需要后写。我想限制我写入数据库的次数。该文档谈到了回写缓存,因此应该是可能的,但是没有关于如何配置它的示例。我已经实现了一个CacheWriter
,但我不明白如何将它配置为例如仅每 10 秒调用一次编写器(如果某些内容更改为缓存当然)。
问问题
1551 次
1 回答
1
CacheWriter
是一个扩展点,文档描述了它可能有意义的用例。这些案例超出了库的范围,如果实施,可能会过于死板。
在正常的写操作(但不是计算)期间自动调用 writer。这可确保观察到给定键的更改顺序。对于后写,作者会将条目添加到异步处理的队列中,例如批处理操作。
在实现此功能时,您可能需要考虑,
- 合并更新(例如收集到 a 中
LinkedHashMap
) - 如果批次超过阈值大小,则在定期后写之前执行批次
- 如果操作尚未刷新,则从 write-behind 缓冲区加载(这避免了不一致的视图,例如由于驱逐)
- 根据外部资源的特性处理重试、速率限制和条带化
更新:
Wim Deblauwe 提供了一个使用 RxJava的好例子。
于 2016-04-27T16:55:52.270 回答