在我的研究中,我跟踪并访问咖啡因的缓存,只访问其中的一些项目。因此,我收集自己的命中/未命中统计数据,这与咖啡因的内置统计数据不同。这对于咖啡因的默认策略- Window-TinyLFU非常有效。然而,我想对其他缓存策略做同样的事情。
事实上,咖啡因的模拟器建议了许多缓存策略,这些策略可以使用the application.conf进行选择。文件。然而,AFAIK,模拟器的行为就像一个黑盒-运行整个跟踪,进行自己的统计,等等。换句话说,虽然咖啡因的构建器允许定义一些参数(例如缓存的最大大小),但我没有找到任何方法来定义缓存策略。
有没有办法做到这一点?我只对准入/驱逐感兴趣-(目前)我不使用基于时间的到期策略。在此之前非常感谢。
发布于 2020-04-12 01:45:14
咖啡因的缓存库和它的模拟器应该分开处理。该库是为应用程序开发人员设计的,因此它是一个隐藏了大量复杂性并做出算法选择的黑匣子。模拟器用于研究,是一个可以直接修改的白盒。
只需派生存储库并按您认为合适的方式修改模拟器。如果可能,我们可以将您的改进合并到上游,但有时这需要更多的工作,因为我们必须在个人研究之外维护代码。通过保留一个分支,当我们在上游迭代它时,您的工作将不会被阻塞或延迟。这样,如果我们缺少对某个需求的支持,并且可以添加那些缺失的部分,您就不会觉得受到了限制。
由于模拟器只有少数人使用,你可以通过打开Github问题来提问,也可以发邮件给我。它的结构相当简单:
策略模拟器:编排流程以在parallel
的漂亮打印结果
一个简单的例子是CaffeinePolicy,它从咖啡因的缓存中适应模拟器的策略。直接算法,如SegmentedLruPolicy,包括一个可选的准入策略,与其逐出策略一起使用。
https://stackoverflow.com/questions/61158264
复制相似问题