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是設置的永久有效期,也一樣會被踢出來!這就是--老數據被踢現象。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章