咖啡因中的替代缓存策略

在我的研究中,我进行了跟踪并仅对其中的某些项目访问了咖啡因的缓存。因此,我收集了自己的命中/未命中统计数据,这与caffeine的内置统计数据不同。这与caffeine的默认策略-Window-TinyLFU一起使用效果很好。但是,我想对其他缓存策略执行相同的操作。

实际上,caffeine的模拟器建议了许多缓存策略,可以使用application.conf进行选择。文件。但是,对于AFAIK,模拟器的行为就像一个黑盒子-运行整个跟踪,进行自己的统计等。换句话说,尽管caffeine的生成器允许定义一些参数(例如缓存的最大大小),但我没有找到任何参数在那里定义缓存策略的方法。

有没有办法做到这一点?我只对录取/逐出感兴趣-(目前)我不使用基于时间的到期策略。 提前谢谢。

aeiou159 回答:咖啡因中的替代缓存策略

咖啡因的缓存库及其模拟器应独立对待。该库是为应用程序开发人员准备的,因此它是一个黑匣子,隐藏了显着的复杂性并做出了算法选择。该模拟器用于研究,是一个可以直接修改的白盒。

简单地分叉存储库并根据需要修改模拟器。如果可能的话,我们可以将您的改进合并到上游,但是有时需要做更多的工作,因为我们必须维护代码,超出个人的研究范围。保持叉子,您将不会在工作中受阻或延迟,因为我们在上游进行了迭代。这样,如果我们缺乏对需求的支持并可以添加那些遗漏的部分,您就不会感到局限。

由于只有少数几个人使用了模拟器,因此您可以通过打开Github问题或向我发送电子邮件来提出问题。其结构非常简单:

  • 模拟器:协调流程以并行运行策略
  • 注册表:创建已配置的策略
  • TraceReader:跟踪格式的解析器
  • PolicyActor:针对该策略运行一批事件
  • 政策:跟踪其统计信息的替代算法
  • Reporter:模拟的漂亮结果。
  • reference.conf:外部化配置

一个简单的示例是CaffeinePolicy,它可以从Caffeine的缓存适应模拟器的策略。像SegmentedLruPolicy这样的直接算法,包括一个可选的允许策略与其驱逐策略配合使用。

本文链接:https://www.f2er.com/2463783.html

大家都在问