redis內(nèi)存淘汰(回收)機(jī)制

內(nèi)存回收體現(xiàn)在兩個(gè)方面

1:對(duì)過期key的回收:

?? 分為兩種結(jié)合:定期刪除+惰性刪除

???? 定期好理解,默認(rèn)100s就隨機(jī)抽一些設(shè)置了過期時(shí)間的key,去檢查是否過期,過期了就刪了。

惰性刪除,見名知意,惰性嘛,我不主動(dòng)刪,我懶,我等你來查詢了我看看你過期沒,過期就刪了還不給你返回,沒過期該怎么樣就怎么樣。

存在問題:有些key一直沒有被隨機(jī)掃到,也沒有再訪問過,通過上面的當(dāng)時(shí)就無法回收,這時(shí)候需要內(nèi)存淘汰機(jī)制

????

2:內(nèi)存達(dá)到上限后出發(fā)內(nèi)存溢出控制策略

1)noeviction:默認(rèn)策略,不會(huì)刪除任何數(shù)據(jù),拒絕所有寫入操作并返

回客戶端錯(cuò)誤信息(error)OOM command not allowed when used memory,此

時(shí)Redis只響應(yīng)讀操作。

2)volatile-lru:根據(jù)LRU算法刪除設(shè)置了超時(shí)屬性(expire)的鍵,直

到騰出足夠空間為止。如果沒有可刪除的鍵對(duì)象,回退到noeviction策略。

3)allkeys-lru:根據(jù)LRU算法刪除鍵,不管數(shù)據(jù)有沒有設(shè)置超時(shí)屬性,

直到騰出足夠空間為止。

4)allkeys-random:隨機(jī)刪除所有鍵,直到騰出足夠空間為止。

5)volatile-random:隨機(jī)刪除過期鍵,直到騰出足夠空間為止。

6)volatile-ttl:根據(jù)鍵值對(duì)象的ttl屬性,刪除最近將要過期數(shù)據(jù)。如果

沒有,回退到noeviction策略。

如果沒有鍵滿足回收的前提條件的話,策略volatile-lru,?volatile-random以及volatile-ttl就和noeviction 差不多了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容