redis 刪除過期鍵策略
?定時刪除:
??優(yōu)點:定時刪除策略對內(nèi)存是最友好的:通過定時器愚隧,定時刪除策略可以保證布偶期間盡快的被刪除秋麸,并釋放過期鍵所占的內(nèi)存
??缺點:對cpu時間是最不有好的均蜜,在過期鍵比較多的情況下笤休,刪除過期鍵這一行為可能會占用相當(dāng)一部分的cpu時間齿椅,在內(nèi)存不緊張但是cpu時間非常緊張的情況下建峭,將cpu時間用在刪除和當(dāng)前任務(wù)無關(guān)的過期鍵上玻侥,
?無疑會對服務(wù)器的響應(yīng)時間和吞吐量造成影響
?惰性刪除:
??優(yōu)點:對cpu時間最友好。
??缺點:對內(nèi)存不友好亿蒸。
??原因:惰性刪除是當(dāng)訪問過期鍵是會刪除改鍵凑兰,但是當(dāng)一些鍵過期后再也沒有被訪問時。他的內(nèi)存就不會被釋放
當(dāng)大量的過期鍵不在被訪問边锁,就會一直占用內(nèi)存姑食,這種情況甚至可以稱之為內(nèi)存泄漏,因為他們可能永遠(yuǎn)不會被刪除
?定期刪除
??描述:定期刪除是對定時刪除與惰性刪除的整合與折中茅坛,每隔一段時間執(zhí)行一次刪除過期鍵操作音半,并通過限制刪除執(zhí)行的時長,和頻率來減少對cpu時間的影響
??定期刪除側(cè)率有效的減少了因為過期鍵帶來的內(nèi)存浪費贡蓖。
?難點:
??如果定期刪除操作執(zhí)行的太頻繁曹鸠,就會退化為定時刪除。
??如果定期刪除操作執(zhí)行的太少斥铺,就會退化為惰性刪除一樣導(dǎo)致內(nèi)存浪費
過期鍵對redis 持久化的影響
?RDB 模式
?寫:
???在使用save,bgsave是redis 會查看保存的鍵?是否過期如果過期將不會被保存在RDB文件里
?讀:
??主服務(wù)器:
????在redis讀取RDB文件是同樣會對文件里的鍵進(jìn)行判斷彻桃,如果鍵已經(jīng)過期將忽略改鍵
??從服務(wù)器:
????在服務(wù)器載入RDB文件是不會判斷改鍵是否過期,而是會將所有的鍵載入服務(wù)器里晾蜘。為什么這樣呢邻眷?因為在從服務(wù)器與主服務(wù)器同步時眠屎,過期鍵將被清除。
?AOF 模式
?寫:
???在鍵過期后但是還沒有被刪除肆饶,AOF不會因為這個鍵過期而產(chǎn)生影響改衩,只有當(dāng)過期鍵被刪除時會向AOF添加一條del命令
???例如客戶端在使用get message 來訪問message的值是發(fā)現(xiàn)改鍵已經(jīng)過期了那么redis會有這樣的操作
????1.刪除數(shù)據(jù)庫中的message
????2.向AOF里添加一條del message 命令
????3.向客戶端返回null
?讀:
??沒有判斷,直接進(jìn)行讀取AOF文件中的命令讀:
??沒有判斷抖拴,直接進(jìn)行讀取AOF文件中的命令
?AOF重寫
??AOF重寫并不是重寫AOF文件燎字,因為AOF并不會對AOF文件進(jìn)行讀取,分析阿宅,寫入等操作候衍,而是根據(jù)服務(wù)器中數(shù)據(jù)庫的狀態(tài)來實現(xiàn)的
??AOF重寫和RDB一樣的會檢測鍵是否過期,如果過期則不會重寫該鍵
?AOF的主從模式
??在該模式下過期鍵的刪除是有主服務(wù)器控制的洒放,如果主服務(wù)器刪除改鍵將會向從服務(wù)器發(fā)送del key命令告知從服務(wù)器刪除該鍵蛉鹿,同時將命令寫入AOF文件
??從服務(wù)器里的鍵即使過期也不會刪除,而是通過接受主服務(wù)器的命令來刪除往湿。
??這也是為了保證主從服務(wù)器模式下的數(shù)據(jù)一致性妖异。