如何使用Caffeine缓存配置后写?

时间:2016-04-27 06:44:43

标签: java caching caffeine

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

1 个答案:

答案 0 :(得分:1)

CacheWriter是一个扩展点,文档描述了可能有意义的用例。这些案例超出了图书馆的范围,如果实施则可能过于僵化。

在正常的写操作(但不是计算)期间,编写器被原子调用。这确保了对给定密钥观察到连续的变化顺序。对于后写,编写器会将该条目添加到异步处理的队列中,例如,批量操作。

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

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

<强>更新

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