2011-02-10 47 views
8

如果memcached中的项目设置为永不过期,它是否免受LRU驱逐?Memcached LRU和失效

我看过的文档没有描绘哪个优先。在我看来,如果LRU只适用于期满> 0的物品,这将是理想的(也许非常复杂)。

回答

16

不,它不是免责的。 Memcached是一个缓存,而不是持久存储。其中的任何项目或整个缓存本身都可能在任何时候消失(但除非它已满或不存在主要问题)。

在沉重的记忆压力下,LRU算法将删除任何它感觉必要的东西。

什么是memcached的缓存?

缓存结构是一个LRU(最近最少使用),加上过期超时。将项目存储到memcached中时,可以说明它在缓存中应该有效的时间。这是永远的,或者将来的某个时候。如果服务器内存不足,则会先更换过期的板,然后再使用最旧的未使用的板。

如果系统没有过期数据区域,它将丢弃最近最少使用的内存块(slab)。

+0

需要注意的是,我认识到memcached不是永久存在的,但是其他缓存解决方案可以免除LRU或LFU驱逐中的条目。 – Mark 2011-02-11 15:11:19

3

doc表示当expirezero_does_not_evict设置为'true'时,0 exptime的物品不能驱逐。