【发布时间】:2011-02-10 20:29:40
【问题描述】:
如果 memcached 中的某项设置为永不过期,它是否免于 LRU eviction?
我看到的文档并没有清楚地描绘出哪个优先。在我看来,让 LRU 仅适用于过期 > 0 的项目是理想的(可能在内部非常复杂)。
【问题讨论】:
标签: memcached
如果 memcached 中的某项设置为永不过期,它是否免于 LRU eviction?
我看到的文档并没有清楚地描绘出哪个优先。在我看来,让 LRU 仅适用于过期 > 0 的项目是理想的(可能在内部非常复杂)。
【问题讨论】:
标签: memcached
不,它不是豁免的。 Memcached 是缓存,不是持久存储。其中的任何项目,或整个缓存本身都可能随时消失(但除非已满或出现重大问题,否则不太可能)。
在沉重的内存压力下,LRU 算法会删除它认为必要的任何内容。
什么是memcached的缓存?
缓存结构是一个 LRU(最近最少使用),加上过期超时。当您将项目存储到 memcached 中时,您可能会说明它应该在缓存中有效多长时间。这是永远的,还是未来的某个时间。如果服务器内存不足,则首先替换过期的slab,然后再替换最旧的未使用的slab。
如果系统没有过期数据区域,它将丢弃最近最少使用的内存块(slab)。
【讨论】:
doc 表示当expirezero_does_not_evict 设置为 'true' 时,exptime 为 0 的项目无法驱逐。
【讨论】: