我知道redis会自行使键过期,释放内存 并想知道 memcached 是否会有相同的行为。
<小时/>假设我有一种很少过期的缓存键
(我们称之为 A),另一种每 5 分钟过期,
使用 Ruby on Rails 的 expires_in: 5.mines
(我们将其称为 B)
如果 B 键太多,memcached 会删除 A 键吗?
例如,如果我可以在商店中存储 5 个值,则场景可能是:
- 存储 A1(剩余 4 个值)
- 存储 B1(还剩 3 个值)
- 存储 B2(还剩 2 个值)
- 存储 B3(还剩 1 个值)
- 存储 B4(剩余 0 个值)
此时B1、B2、B3已经过期了(因为它们的生命周期是这样的) 短)。
<小时/>如果我在缓存中存储另一个元素会发生什么?会不会掉A1 因为它是最旧的,或者它会知道 B 键的生命周期很短并且 首先使用它们在内存中的位置?
最佳答案
Memcached 使用 LRU(最近最少使用)机制来确定当要存储的对象数量多于可用空间时哪些现有对象将过期。您可以进一步引用以下链接了解其 key 过期机制: http://docs.oracle.com/cd/E17952_01/refman-5.6-en/ha-memcached-using-expiry.html
关于caching - 当键具有不同的时间范围并且缓存已满时,memcached 过期行为是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22500824/