Redis逐出算法

爲什麼要由逐出算法

情景分析,如果有新數據進入redis,但是數據都沒有過期,而且內存也不足,那麼這時就需要逐出算法,來騰出一些空間
Redis使用內存存儲數據,在執行每一個命令前,會調用freeMemoryIfNeeded()檢測內存是否充足
注意:逐出數據的過程不是100%能夠清理出足夠的可使用的內存空間,如果不成功則反覆執行,當對所有數據嘗試完畢後,如果不能達到內存清理的要求,將出現錯誤信息
在這裏插入圖片描述

配置

#最大可使用內存,佔用物理內存的比例,默認值爲0,表示不限制,生產環境根據需求設定,通常設置在50%以上
maxmemory

#每次選取待刪除數據的個數,選取數據時並不會全庫掃描,導致嚴重的性能消耗,降低讀寫性能,因此採用隨機獲取數據的凡是作爲待檢測刪除數據
maxmemory-samples

#刪除策略,達到最大內存後,對被挑選出來的數據進行刪除的策略
maxmemory-policy

逐出算法

  • 檢查易失數據(可能會過去的數據)
  1. volatile-lru:挑選最近最少使用的數據淘汰
  2. volatile-lfu:挑選最近使用次數最少的數據淘汰
  3. volatile-ttl:挑選將要過期的數據淘汰
  4. volatile-random:任意選擇數據淘汰
  • 檢查全庫數據
  1. allkeys-lru:挑選最近最少使用的數據淘汰
  2. allkeys-lfu:挑選最近使用次數最少的數據淘汰
  3. allkeys-random:任意選擇數據淘汰
  • 放棄數據驅逐
  1. no-enviction:禁止驅逐數據
    以上在redis.conf文件中修改
maxmemory-policy volatile-lru

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