2011-02-10 29 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的物品不能驅逐。