Redis的淘汰策略


今天我們來聊一聊Redis的淘汰策略。

在使用Redis的過程中,當Redis緩存被寫滿之后,Redis就會根據配置的淘汰策略進行數據淘汰。從Redis4.0之后一共有8種淘汰策略。我們來分別看一下。

1.noeviction
不進行數據淘汰,也是Redis的默認配置。這時,當緩存被寫滿時,再有寫請求進來,Redis不再提供服務,直接返回錯誤。
2.volatile-random
緩存滿了之后,在設置了過期時間的鍵值對中進行隨機刪除。
3.volatile-ttl
緩存滿了之后,會針對設置了過期時間的鍵值對中,根據過期時間的先后順序進行刪除,越早過期的越先被刪除。
4.volatile-lru
緩存滿了之后,針對設置了過期時間的鍵值對,采用LRU算法進行淘汰,不熟悉LRU的可以看這篇文章
5.volatile-lfu
緩存滿了之后,針對設置了過期時間的鍵值對,采用LFU的算法進行淘汰。
6.allkeys-random
緩存滿了之后,從所有鍵值對中隨機選擇並刪除數據。
7.allkeys-lru
緩存寫滿之后,使用LRU算法在所有的數據中進行篩選刪除。
8.allkeys-lfu
緩存滿了之后,使用LRU算法在所有的數據中進行篩選刪除。

在日常使用過程中,主要根據你的數據要求來配置相應的策略,這里我給你三點建議。

1.我們優先使用allkeys-lru 策略。這樣,我們就可以借助LRU算法去淘汰那些不常用的數據,把最近最常用的放在緩存中,從而提高應用的性能。如果你的數據有明顯的冷熱區分,建議你使用allkeys-lru策略。
2.如果你的數據的訪問頻率相差不大,也沒有冷熱之分,直接使用allkeys-random 策略,隨機選擇淘汰的數據就行。
3.如果你的數據有置頂要求,比如置頂新聞等。那么我們就選擇volatile-lru策略,同時不給置頂數據設置過期時間,這樣一來,置頂的數據永遠不會被刪除,而其他設置了過期時間的數據,會更加LRU算法進行淘汰。

 

今天我們就分享到這里,如果需要redis的學習資料,可以關注公眾號【程序員學長】,回復redis即可得。

如果對你有用,給個「三連」吧。

 

 

 


免責聲明!

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



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