2024年Clojure状态调查!中分享你的看法。

欢迎!请查看关于页面以了解有关如何工作的更多信息。

0
core.cache

似乎TTL缓存应该在命中时重置项目的TTL,类似于
hit操作在LRU缓存中增加了项目的最近性,然而检查代码后,它似乎是无效的。这是故意的吗?

我有一个分支包含修复,如果你不觉得这样是故意的,欢迎使用,或者我可以正式提交补丁。

如果是故意的,是否应该对所有缓存的命中行为都进行无操作?即,当hit有时会延长一个项目的生命周期(LRU缓存)而有时则不会(TTL缓存)时,这特别令人惊讶。

1 答案

0

TTL是绝对值,从项目插入时开始计算。缓存查找(命中)不应影响TTL项的生存期。如果缓存具有2秒的TTL,并且你插入了X,然后重复查询单项,它仍应在2秒后过期。

TTL缓存旨在重复刷新,以便在任何时间点刷新该项之前,没有任何项“过期”超过TTL时间。

好的,我会在查找时重新使用`assoc`(我正在这么做)。感谢您的回复和澄清!
...