欢迎!请查看关于页面以了解有关如何工作的更多信息。
似乎TTL缓存应该在命中时重置项目的TTL,类似于hit操作在LRU缓存中增加了项目的最近性,然而检查代码后,它似乎是无效的。这是故意的吗?
hit
我有一个分支包含修复,如果你不觉得这样是故意的,欢迎使用,或者我可以正式提交补丁。
如果是故意的,是否应该对所有缓存的命中行为都进行无操作?即,当hit有时会延长一个项目的生命周期(LRU缓存)而有时则不会(TTL缓存)时,这特别令人惊讶。
TTL是绝对值,从项目插入时开始计算。缓存查找(命中)不应影响TTL项的生存期。如果缓存具有2秒的TTL,并且你插入了X,然后重复查询单项,它仍应在2秒后过期。
TTL缓存旨在重复刷新,以便在任何时间点刷新该项之前,没有任何项“过期”超过TTL时间。