1. 程式人生 > 其它 >Memcached:07---資料過期與記憶體刪除策略

Memcached:07---資料過期與記憶體刪除策略

技術標籤:Memcached資料過期與記憶體刪除策略

一、memcached在資料刪除方面有效利用資源

資料不會真正從memcached中消失

LazyExpiration

  • memcached內部不會監視記錄是否過期,而是在get時檢視記錄的時間戳,檢查記錄是否過期。這種技術被稱為lazy(惰性)expiration。
  • 因此,memcached不會在過期監視上耗費
    CPU時間。

二、LRU:從快取中有效刪除資料的原理

概述

  • memcached會優先使用已超時的記錄的空間,但即使如此,也會發生追加新記錄時空間不足的情況,此時就要使用名為 LeastRecentlyUsed(LRU)機制來分配空間。
  • 顧名思義,這是刪除“最近最少使用”的記錄的機制。因此,當memcached的記憶體空間不足時(無法從slabclass獲取到新的空間時),就從最近未被使用的記錄中搜索,並將其空間分配給新的記錄。從快取的實用角度來看,該模型十分理想。
  • 原理:當某個單元被請求時,維護一個計數器,通過計數器來判斷最近誰最少被使用,就把誰踢出。

備註

  • 即使某個key是設定的永久有效期
    ,也一樣會被踢出來。
  • 不過,有些情況下LRU機制反倒會造成麻煩。memcached啟動時通過“­M”引數可以禁止LRU,如下所示:
 memcached ­M ­m 1024
  • 啟動時必須注意的是,小寫的“­m”選項是用來指定最大記憶體大小的。
  • 指定“­M”引數啟動後,記憶體用盡時memcached會返回錯誤。話說回來,memcached畢竟不是儲存器,而是快取,所以推薦使用LRU。

三、memcached中的一些引數限制

  • key的長度:二進位制協議設計出之前,最大支援250 位元組(二進位制協議支援 65536 個位元組),從1.3版本之後,memcahced引入了二進位制協議,理論上最大可使用65536位元組
    2^{16})長的鍵
  • value的限制:1m,一般都是儲存一些文字,如新聞列表等等,這個值足夠了。
  • 記憶體的限制:32位下最大設定到 2g。
  • 如果有30g資料要快取,一般也不會單例項裝 30g,(不要把雞蛋裝在一個籃子裡),一般建議開啟多個例項(可以在不同的機器或同臺機器上的不同埠)