Redis之最大內存置換策略


0.前言

Redis默認最大內存大小是應用程序可訪問的內存大小, 32位windows下是2GB, linux下是3GB. 64位下可以訪問的內存為2^64字節, Redis提供了maxmemory字段來限制使用的最大內存. 既然提供了最大內存限制, 那么當我們程序達到最大值時, Redis使用了多種策略進行置換.Redis建議最大內存設置為物理內存的一半。

1.Redis置換策略字段maxmemory-policy

volatile-lru : 對具有生存周期的key進行LRU算法置換.
volatile-random : 對具有生存周期的key進行隨機置換.
volatile-ttl : 對具有生存周期的key隨機進行抽樣, 置換出抽樣中生存周期最短的.
allkeys-lru : 對整個db進行LRU算法置換
allkeys-random : 對整個db進行隨機置換
noeviction : 不進行置換

volatile-random和allkeys-random策略, Redis直接在相應的數據集上隨機並置換.

volatile-ttl需要抽樣, 抽樣的大小由maxmemory-samples控制, 默認maxmemory-samples為5, 抽樣越大算法精確度越高,但是消耗也越大.

volatile-lru和allkeys-lru是對抽樣的數據中選出最近最久未使用的Key置換出去.這里抽樣的大小默認是16, 如果我們設置maxmemory-samples並且大於16的話, 抽樣值和最大的保持一致.Redis設置了一個可置換池, 大小為16, 每次先進行抽樣, 抽樣之后與置換池中的數據進行比較, 選出最近最久未使用的16個Key放入置換池中, 從置換池中再選擇一個Key進行置換.


免責聲明!

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



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