淺談redis中緩存過期、內(nèi)存被緩存占用要怎么處理?下面本篇文章帶大家了解一下redis中的緩存過期處理策略和內(nèi)存淘汰機(jī)制,希望對大家有所幫助!
已過期的key如何處理?
設(shè)置了expire的key緩存過期了,但是服務(wù)器的內(nèi)存還是會被占用,這是因?yàn)閞edis所基于的兩種刪除策略
redis有兩種策略:
-
(主動)定時(shí)刪除
- 定時(shí)隨機(jī)的檢查過期的key,如果過期則清理刪除。(每秒檢查次數(shù)在redis.conf中的hz配置)
-
(被動)惰性刪除
- 當(dāng)客戶端請求一個已經(jīng)過期的key的時(shí)候,那么redis會檢查這個key是否過期,如果過期了,則刪除,然后返回一個nil。這種策略對cpu比較友好,不會有太多的損耗,但是內(nèi)存占用會比較高。
所以,雖然key過期了,但是只要沒有被redis清理,那么其實(shí)內(nèi)存還是會被占用著的。【相關(guān)推薦:Redis視頻教程】
那么如果內(nèi)存被Redis緩存占用慢了咋辦?
內(nèi)存占滿了,可以使用硬盤,來保存,但是沒意義,因?yàn)橛脖P沒有內(nèi)存快,會影響redis性能。
所以,當(dāng)內(nèi)存占用滿了以后,redis提供了一套緩存淘汰機(jī)制:MEMORY MANAGEMENT
maxmemory:當(dāng)內(nèi)存已使用率到達(dá),則開始清理緩存
*?noeviction:舊緩存永不過期,新緩存設(shè)置不了,返回錯誤 *?allkeys-lru:清除最少用的舊緩存,然后保存新的緩存(推薦使用) *?allkeys-random:在所有的緩存中隨機(jī)刪除(不推薦) *?volatile-lru:在那些設(shè)置了expire過期時(shí)間的緩存中,清除最少用的舊緩存,然后保存新的緩存 *?volatile-random:在那些設(shè)置了expire過期時(shí)間的緩存中,隨機(jī)刪除緩存 *?volatile-ttl:在那些設(shè)置了expire過期時(shí)間的緩存中,刪除即將過期的`
更多編程相關(guān)知識,請?jiān)L問:Redis視頻教程!!
? 版權(quán)聲明
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載。
THE END