1. 程式人生 > >Memcached的刪除機制和過期機制

Memcached的刪除機制和過期機制

做實驗



為什麼呢?

Memcached的過期刪除機制

1.當某個值過期後,並沒有記憶體刪除,因此stats統計時curr_item有其資訊。

2.當取值時,判斷是否過期,如果過期,返回空,並且清空,curr_item就減少了。

3.如果之前沒有get過,將不會自動刪除,當某個新值去佔用他的位置時,當成空chunk來佔用。

這個過期只是不讓使用者看不到這個資料而已,並沒有在過期的瞬間立即從記憶體刪除,這個稱為lazy expiration 惰性失效機制。

好處:減少了CPU時間和檢測的成本。

如果以122byteschunk大小舉例,122chunk都滿了,又有新的值(長度為120)要加入,要擠掉誰?

Memcached此處用的LRU刪除機制(作業系統的記憶體管理,常用FIFO.LRU刪除)

LRUleast Recenly Used 最近最少使用

FIFOfirst in first out  先進先出


原理:當某個單元被請求時,維護一個計數器,通過計數器來判斷最近最少被使用。就把誰踢出。

注:即使某個key是設定的永久有效期,也一樣會被踢出來!這就是--老資料被踢現象。