“請你描述一下Redis的緩存淘汰策略” 你如果你正好遇到這個問題,想好怎麼回答了嗎? 關於這個問題,我把高手的回答整理到了15W字的面試文檔裡面 大家可以私信留言領取。 下麵看看高手的回答。 高手: 這個問題我需要從三個方面來回答。 第一個方面: 當Redis使用的記憶體達到maxmemory參數配 ...
“請你描述一下Redis的緩存淘汰策略”
你如果你正好遇到這個問題,想好怎麼回答了嗎?
關於這個問題,我把高手的回答整理到了15W字的面試文檔裡面
大家可以私信留言領取。
下麵看看高手的回答。
高手:
這個問題我需要從三個方面來回答。
第一個方面:
當Redis使用的記憶體達到maxmemory參數配置的閾值的時候,Redis就會根據配置的記憶體淘汰策略。
把訪問頻率不高的key從記憶體中移除。
maxmemory預設情況是當前伺服器的最大記憶體。
第二個方面:
Redis預設提供了8種緩存淘汰策略,這8種緩存淘汰策略總的來說,我認為可以歸類成五種
- 第一種, 採用LRU策略,就是把不經常使用的key淘汰掉
- 第二種,採用LFU策略,它在LRU演算法上做了優化,增加了數據訪問次數,從而確保淘汰的是非熱點key。
- 第三種,隨機策略,也就是是隨機刪除一些key
- 第四種,ttl策略,從設置了過期時間的key裡面,挑選出過期時間最近的key進行優先淘汰
- 第五種,當記憶體不夠的時候,直接報錯,這是預設的策略。
這些策略可以在redis.conf文件中手動配置和修改,我們可以根據緩存的類型和緩存使用的場景來選擇合適的淘汰策略。
最後一個方面,我們在使用緩存的時候,建議是增加這些緩存的過期時間。
因為我們知道這些緩存大概的生命周期,從而更好的利用記憶體。
總結
Redis是一個記憶體資料庫,而記憶體又是非常寶貴的資源。
如何用有限的伺服器資源來支撐更多業務,就必須要考慮到緩存的淘汰演算法把一些不怎麼使用緩存淘汰掉。
因此,我認為這個面試題的考察方向也很好,建議大家深度學習一下。
大家記得點贊收藏加關註!!!
版權聲明:本博客所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自
Mic帶你學架構
!
如果本篇文章對您有幫助,還請幫忙點個關註和贊,您的堅持是我不斷創作的動力。歡迎關註「跟著Mic學架構」公眾號公眾號獲取更多技術乾貨!