Redis之最大內存置換策略

0.前言

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

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

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

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

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

volatile-lru和allkeys-lru是對抽樣的數據中選出最近最久未使用的Key置換出去.這裏抽樣的大小默認是16, 若是咱們設置maxmemory-samples而且大於16的話, 抽樣值和最大的保持一致.Redis設置了一個可置換池, 大小爲16, 每次先進行抽樣, 抽樣以後與置換池中的數據進行比較, 選出最近最久未使用的16個Key放入置換池中, 從置換池中再選擇一個Key進行置換.dom

相關文章
相關標籤/搜索