首頁 > 資料庫 > Redis > 主體

淺談Redis中快取過期、記憶體被快取佔用要怎麼處理?

青灯夜游
發布: 2021-11-26 19:32:23
轉載
2018 人瀏覽過

淺談Redis中快取過期、記憶體被快取佔用要怎麼處理?以下這篇文章帶大家了解Redis中的快取過期處理策略和記憶體淘汰機制,希望對大家有幫助!

淺談Redis中快取過期、記憶體被快取佔用要怎麼處理?

已過期的key如何處理?

設定了expire的key快取過期了,但伺服器的記憶體還是會被佔用,這是因為redis所基於的兩種刪除策略
redis有兩種策略:

  • (主動)定時刪除

    • 定時隨機的檢查過期的key,如果過期則清理刪除。 (每秒檢查次數在redis.conf中的hz配置)
  • (被動)惰性刪除

    • 當客戶端請求一個已經過期的key的時候,那麼redis會檢查這個key是否過期,如果過期了,則刪除,然後回傳一個nil。這種策略對cpu比較友好,不會有太多的損耗,但是記憶體佔用會比較高。

所以,雖然key過期了,但只要沒有被redis清理,那麼其實記憶體還是會被佔用的。 【相關建議:Redis影片教學

那麼如果記憶體被Redis快取佔用慢了咋辦?

記憶體佔滿了,可以使用硬碟,來保存,但沒意義,因為硬碟沒有記憶體快,會影響redis效能。
所以,當記憶體佔用滿了以後,redis提供了一套快取淘汰機制:MEMORY MANAGEMENT

maxmemory:當記憶體已使用率到達,則開始清理快取

* noeviction:旧缓存永不过期,新缓存设置不了,返回错误
* allkeys-lru:清除最少用的旧缓存,然后保存新的缓存(推荐使用)
* allkeys-random:在所有的缓存中随机删除(不推荐)
* volatile-lru:在那些设置了expire过期时间的缓存中,清除最少用的旧缓存,然后保存新的缓存
* volatile-random:在那些设置了expire过期时间的缓存中,随机删除缓存
* volatile-ttl:在那些设置了expire过期时间的缓存中,删除即将过期的`
登入後複製

更多程式相關知識,請造訪:程式設計入門! !

以上是淺談Redis中快取過期、記憶體被快取佔用要怎麼處理?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:juejin.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板