限制Redis使用的最大內存


一、內存到達最大限制移除策略

LRU: Least Recently Used 最少最近使用 (從時間跨度上來,訪問時間在最早的那個優先剔除)訪問時間最早的優先剔除

LFU: Least Frequently Used 訪問次數最少的優先剔除。

1.volatile-lru -> Evict using approximated LRU among the keys with an expire set.  僅對設置了過期時間的鍵采取LRU淘汰
2.allkeys-lru -> Evict any key using approximated LRU. 對所有的鍵都采取LRU淘汰,當預期請求符合一個冪次分布(二八法則等),比如一部分的子集元素比其它其它元素被訪問的更多時,可以選擇這個策略。
3.volatile-lfu -> Evict using approximated LFU among the keys with an expire set. 對有過期時間的key采用LFU淘汰算法
4.allkeys-lfu -> Evict any key using approximated LFU. 對全部key采用LFU淘汰算法
5.volatile-random -> Remove a random key among the ones with an expire set. 隨機回收設置過期時間的鍵
6.allkeys-random -> Remove a random key, any key.  隨機回收所有的鍵 。循環連續的訪問所有的鍵時,或者預期請求分布平均(所有元素被訪問的概率都差不多)
7.volatile-ttl -> Remove the key with the nearest expire time (minor TTL)。 僅淘汰設置了過期時間的鍵---淘汰生存時間TTL(Time To Live)更小的鍵
8.noeviction -> Don't evict anything, just return an error on write operations. 如果緩存數據超過了maxmemory限定值,並且客戶端正在執行的命令(大部分的寫入指令,但DEL和幾個指令例外)會導致內存分配,則向客戶端返回錯誤響應

 

二、設置redis.conf配置文件最大使用內存和移除策略

    1.maxmemory: 配置Redis存儲數據時指定限制的內存大小,比如100m。當緩存消耗的內存超過這個數值時, 將觸發數據淘汰。該數據配置為0時,表示緩存的數據量沒有限制, 即LRU功能不生效。64位的系統默認值為0,32位的系統默認內存限制為3GB

    2.maxmemory_policy: 觸發數據淘汰后的淘汰策略

    3.maxmemory_samples: 隨機采樣的精度,也就是隨即取出key的數目。該數值配置越大, 越接近於真實的LRU算法,但是數值越大,相應消耗也變高,對性能有一定影響,樣本值默認為5。

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM