【Redis系列】面试官:Redis中的数据已经过期,为什么还占用这内存?
生活随笔
收集整理的這篇文章主要介紹了
【Redis系列】面试官:Redis中的数据已经过期,为什么还占用这内存?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
如果有面試官問Redis中的數據已經過期為什么還占用這內存?
它是因為Redis本身的過期策略和緩存淘汰機制所導致的。
說說Redis的過期策略和緩存淘汰機制
先來說說Redis的過期策略,Redis的過期策略其實分為兩種:被動方式和主動方式
被動方式:當請求訪問某個過期key時,該key會主動刪除。這也有一個問題有些過期key可能永遠也不會被訪問。
主動方式:定期隨機抽取一些key,然后刪除過期的部分,如果發現過期部分大于1/4,則繼續隨機抽取進行刪除。
接著是緩存淘汰機制
由于定期刪除+惰性刪除并不能解決所有過期的數據,長時間的堆積很可能造成內存耗盡,所以緩存淘汰機制能夠解決這個問題
(1)allkeys-lru:當內存不足以容納新數據時,移除最近最少使用的數據
(2)volatile-ttl:當內存不足以容納新數據時,優先移除最早過期的key
(3)allkeys-random:回收隨機的key
…剩下的不常用,一般情況下allkeys-lru最為常用。如果滿足冪定律分布使用allkeys-lru最好,如果是循環訪問使用allkeys-random最為合適。
總結
以上是生活随笔為你收集整理的【Redis系列】面试官:Redis中的数据已经过期,为什么还占用这内存?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Redis系列】深入浅出Redis主从
- 下一篇: 【虚拟化】docker创建mysql镜像