Redis之定期刪除和惰性刪除詳解
惰性刪除
Redis并不是對(duì)于指定數(shù)據(jù)到了開(kāi)發(fā)者設(shè)定好的生命結(jié)束時(shí)間就自動(dòng)被刪除,因?yàn)閷?duì)這個(gè)內(nèi)容進(jìn)行不斷輪詢檢測(cè)的性能消耗太大了,只有到了用戶想要訪問(wèn)這個(gè)key所對(duì)應(yīng)的內(nèi)容的時(shí)候,Redis才會(huì)首先去檢測(cè)這個(gè)key還是否有效,然后才將其進(jìn)行刪除。
這種做法雖然極大程度上利用了CPU但是會(huì)觸發(fā)內(nèi)存泄漏問(wèn)題,因此就引入了定期刪除機(jī)制。
定期刪除
Redis的主線程每隔一段時(shí)間就會(huì)抽查一部分的key值,如果抽到過(guò)期的就會(huì)立即刪除,如果抽到過(guò)期的占抽取總數(shù)的占比較大,主線程就會(huì)立刻觸發(fā)的下一次的定期刪除工作。
這樣不會(huì)導(dǎo)致主線程一直都在定期刪除嗎?主線程內(nèi)部有超時(shí)熔斷機(jī)制,在執(zhí)行定期刪除任務(wù)達(dá)到一定時(shí)間就會(huì)立刻停下,轉(zhuǎn)而對(duì)client請(qǐng)求進(jìn)行處理。
注:
4.0版本后,主線程對(duì)過(guò)期數(shù)據(jù)的清理工作,變成了主線程先查看釋放內(nèi)容大小,如果內(nèi)存很大,就會(huì)摘除該指針并交由laze_free去清理,大大加快了釋放空間的效率。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
如何解決Redis緩存穿透(緩存空對(duì)象、布隆過(guò)濾器)
緩存穿透是一個(gè)常見(jiàn)的問(wèn)題,它發(fā)生當(dāng)請(qǐng)求的數(shù)據(jù)既不在緩存中也不在數(shù)據(jù)庫(kù)中,文章通過(guò)一個(gè)查詢商品店鋪的案例,展示了如何結(jié)合這兩種方法來(lái)避免緩存穿透,首先利用布隆過(guò)濾器過(guò)濾掉不存在的id,對(duì)于誤判的情況,則采用緩存空對(duì)象的策略進(jìn)行補(bǔ)救2024-11-11
Redis數(shù)據(jù)一致性問(wèn)題的三種解決方案
Redis(Remote?Dictionary?Server?),是一個(gè)高性能的基于Key-Value結(jié)構(gòu)存儲(chǔ)的NoSQL開(kāi)源數(shù)據(jù)庫(kù),大部分公司采用Redis來(lái)實(shí)現(xiàn)分布式緩存,用來(lái)提高數(shù)據(jù)查詢效率,本文就給大家介紹三種Redis數(shù)據(jù)一致性問(wèn)題的解決方案,需要的朋友可以參考下2023-07-07
Redis內(nèi)網(wǎng)主從節(jié)點(diǎn)搭建過(guò)程
本文詳細(xì)介紹了在Linux環(huán)境下手動(dòng)上傳gcc-c++和redis.tar文件的步驟,并強(qiáng)調(diào)了服務(wù)安裝、啟動(dòng)及主從復(fù)制配置的重要性,為讀者提供了寶貴的實(shí)踐參考2026-06-06
Redis特殊數(shù)據(jù)類型HyperLogLog基數(shù)統(tǒng)計(jì)算法講解
這篇文章主要為大家介紹了Redis特殊數(shù)據(jù)類型HyperLogLog基數(shù)統(tǒng)計(jì)算法講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
Redis 跳表(Skip List)原理實(shí)現(xiàn)
跳表是zset有序集合的底層實(shí)現(xiàn)之一,本文主要介紹了Redis 跳表(Skip List)原理實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-04-04
redis做websocket分布式消息推送服務(wù)的實(shí)現(xiàn)
本文介紹了使用Redis作為消息隊(duì)列實(shí)現(xiàn)WebSocket分布式消息推送服務(wù)的方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-12-12
Redis配合SSDB實(shí)現(xiàn)持久化存儲(chǔ)代碼示例
這篇文章主要介紹了Redis配合SSDB實(shí)現(xiàn)持久化存儲(chǔ)代碼示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11

