Redis有8種淘汰策略(常規(guī)的+Redis4.0新增的2種lfu策略)
名詞解釋
lru(less recently used)最近最少使用
ttl(time to live)存活時間
lfu(least frequency use)最少使用頻率
淘汰策略
1、 no-eviction(默認策略):不淘汰策略,超過最大內(nèi)存則返回錯誤信息;
2、 volatile-lru:已經(jīng)設(shè)置過期時間的KV集中,優(yōu)先淘汰最近最少使用的;
3、 volatile-ttl:已經(jīng)設(shè)置過期時間的KV集中,優(yōu)先淘汰剩余存活時間短的;
4、 volatile-random:已經(jīng)設(shè)置過期時間的KV集中,隨機選擇數(shù)據(jù)淘汰;
5、 allkeys-lru:所有KV集中,優(yōu)先淘汰最近最少使用的;
6、 allkeys-random:所有KV集中,隨機選擇需要淘汰的數(shù)據(jù);
新增的兩種lfu策略:統(tǒng)計訪問頻率,將訪問頻率最少的淘汰掉;
7、 volatile-lfu
8、 allkeys-lfu
lru和lfu的區(qū)別
時間:t1~~~~~t2~~~~~t3~~~~t4
~~~~A~A~A~~A~A~A~A~A~~A~~~
~~~~B~~~~~~B~~~~~~B~~~~~~B~
在上圖中,分別表示key A和B的使用情況,在t4時刻根據(jù)lru和lfu兩種淘汰策略:
- lru策略:因為最近使用的是B,所以會淘汰A;
- lfu策略:A的使用頻率高很多,所以淘汰的是B;