共計(jì) 916 個(gè)字符,預(yù)計(jì)需要花費(fèi) 3 分鐘才能閱讀完成。
這篇文章主要講解了“Redis 中緩存過(guò)期、內(nèi)存被緩存占用要如何處理”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著丸趣 TV 小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“Redis 中緩存過(guò)期、內(nèi)存被緩存占用要如何處理”吧!
已過(guò)期的 key 如何處理?
設(shè)置了 expire 的 key 緩存過(guò)期了,但是服務(wù)器的內(nèi)存還是會(huì)被占用,這是因?yàn)?redis 所基于的兩種刪除策略
redis 有兩種策略:
(主動(dòng))定時(shí)刪除
定時(shí)隨機(jī)的檢查過(guò)期的 key,如果過(guò)期則清理刪除。(每秒檢查次數(shù)在 redis.conf 中的 hz 配置)
(被動(dòng))惰性刪除
當(dāng)客戶(hù)端請(qǐng)求一個(gè)已經(jīng)過(guò)期的 key 的時(shí)候,那么 redis 會(huì)檢查這個(gè) key 是否過(guò)期,如果過(guò)期了,則刪除,然后返回一個(gè) nil。這種策略對(duì) cpu 比較友好,不會(huì)有太多的損耗,但是內(nèi)存占用會(huì)比較高。
所以,雖然 key 過(guò)期了,但是只要沒(méi)有被 redis 清理,那么其實(shí)內(nèi)存還是會(huì)被占用著的。
那么如果內(nèi)存被 Redis 緩存占用慢了咋辦?
內(nèi)存占滿(mǎn)了,可以使用硬盤(pán),來(lái)保存,但是沒(méi)意義,因?yàn)橛脖P(pán)沒(méi)有內(nèi)存快,會(huì)影響 redis 性能。
所以,當(dāng)內(nèi)存占用滿(mǎn)了以后,redis 提供了一套緩存淘汰機(jī)制:MEMORY MANAGEMENT
maxmemory:當(dāng)內(nèi)存已使用率到達(dá),則開(kāi)始清理緩存
* noeviction:舊緩存永不過(guò)期,新緩存設(shè)置不了,返回錯(cuò)誤
* allkeys-lru:清除最少用的舊緩存,然后保存新的緩存(推薦使用)* allkeys-random:在所有的緩存中隨機(jī)刪除(不推薦)* volatile-lru:在那些設(shè)置了 expire 過(guò)期時(shí)間的緩存中,清除最少用的舊緩存,然后保存新的緩存
* volatile-random:在那些設(shè)置了 expire 過(guò)期時(shí)間的緩存中,隨機(jī)刪除緩存
* volatile-ttl:在那些設(shè)置了 expire 過(guò)期時(shí)間的緩存中,刪除即將過(guò)期的 `
感謝各位的閱讀,以上就是“Redis 中緩存過(guò)期、內(nèi)存被緩存占用要如何處理”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì) Redis 中緩存過(guò)期、內(nèi)存被緩存占用要如何處理這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是丸趣 TV,丸趣 TV 小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!