2024年Clojure状态调查!中分享您的想法。

欢迎!有关如何工作的更多信息,请参阅关于页面。

0
core.cache

似乎TTL缓存应该在命中时重置项的TTL,类似于
LRU缓存上hit增加项的最近性,但检查代码后发现它实际上是一个无操作。这是故意的吗?

我有一个分支带有修复,如果您不认为是故意的,欢迎使用,或者我可以正式提交补丁。

如果是故意的,所有缓存的命中行为应该都是无操作吗?即对LRU缓存来说,hit有时可以延长项的生命周期,而TTL缓存则不行这一点特别令人惊讶。

1 答案

0

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

TTL缓存旨在重复刷新,以确保项在刷新前不会超过TTL时间。

好的,我将仅在查找时重新`assoc`(这是我目前正在做的)。感谢您的回复和澄清!
...