Redis有8種淘汰策略(常規(guī)的+Redis4.0新增的2種lfu策略)
名詞解釋
lru(less recently used)最近最少使用
ttl(time to live)存活時(shí)間
lfu(least frequency use)最少使用頻率
淘汰策略
1制妄、 no-eviction(默認(rèn)策略):不淘汰策略犁苏,超過最大內(nèi)存則返回錯(cuò)誤信息铝耻;
2剑鞍、 volatile-lru:已經(jīng)設(shè)置過期時(shí)間的KV集中粗合,優(yōu)先淘汰最近最少使用的;
3、 volatile-ttl:已經(jīng)設(shè)置過期時(shí)間的KV集中,優(yōu)先淘汰剩余存活時(shí)間短的芝此;
4、 volatile-random:已經(jīng)設(shè)置過期時(shí)間的KV集中因痛,隨機(jī)選擇數(shù)據(jù)淘汰婚苹;
5、 allkeys-lru:所有KV集中鸵膏,優(yōu)先淘汰最近最少使用的膊升;
6、 allkeys-random:所有KV集中谭企,隨機(jī)選擇需要淘汰的數(shù)據(jù)廓译;
新增的兩種lfu策略:統(tǒng)計(jì)訪問頻率,將訪問頻率最少的淘汰掉赞咙;
7责循、 volatile-lfu
8糟港、 allkeys-lfu
lru和lfu的區(qū)別
時(shí)間:t1~~~~~t2~~~~~t3~~~~t4
~~~~A~A~A~~A~A~A~A~A~~A~~~
~~~~B~~~~~~B~~~~~~B~~~~~~B~
在上圖中攀操,分別表示key A和B的使用情況,在t4時(shí)刻根據(jù)lru和lfu兩種淘汰策略:
- lru策略:因?yàn)樽罱褂玫氖荁秸抚,所以會(huì)淘汰A速和;
- lfu策略:A的使用頻率高很多,所以淘汰的是B剥汤;