【发布时间】:2013-12-25 18:12:51
【问题描述】:
根据 Memcached FAQ,当尝试为缓存分配值并达到内存限制时会发生以下情况:
什么时候获取过期缓存项 从缓存中删除?
memcached 使用 延迟到期,这意味着它使用 没有额外的 cpu 过期项目。当一个 请求项目(获取请求)它 检查过期时间以查看是否 该项目之前仍然有效 将其返回给客户。
添加新项目时也是如此 缓存,如果缓存已满,则 将寻找过期的物品 在更换最少之前更换 缓存中已使用的项目。缓存中已使用的项目。
问题是,当它替换“最少使用的项目”时究竟会发生什么。它是简单地通过访问每个键来维护排名,还是跟踪一段时间内的访问?
例如。我将 2 个项目添加到缓存中(A 和 B)。 A 和 B 的访问模式略有不同。我每小时访问 A 5000 次,而每秒访问 B 一次。根据文档,似乎如果我在两个小时后尝试添加另一个项目(C)并且达到最大内存分配,则 B 将被删除。这是因为 B 只被访问了 7200 次,而 A 被访问了 10000 次。
这是正确的吗?如果没有,是否有跟踪访问的滑动时间窗口?例如,如果窗口为 30 分钟,则 A 将被删除,因为它在过去 30 分钟内被访问了 0 次,而 B 被访问了 1800 次。
有什么想法吗?
【问题讨论】:
标签: memcached