更新時(shí)間:2023年04月19日18時(shí)00分 來(lái)源:傳智教育 瀏覽次數(shù):
Redis對(duì)數(shù)據(jù)設(shè)置數(shù)據(jù)的有效時(shí)間,數(shù)據(jù)過(guò)期以后,就需要將數(shù)據(jù)從內(nèi)存中刪除掉??梢园凑詹煌囊?guī)則進(jìn)行刪除,這種刪除規(guī)則就被稱之為數(shù)據(jù)的刪除策略(數(shù)據(jù)過(guò)期策略)。在Redis中提供了兩種數(shù)據(jù)刪除策略,惰性刪除和定期刪除,下面詳細(xì)來(lái)看。
惰性刪除
惰性刪除設(shè)置該key過(guò)期時(shí)間后,我們不去管它,當(dāng)需要該key時(shí),我們?cè)跈z查其是否過(guò)期,如果過(guò)期,我們就刪掉它,反之返回該key。
例如:
set name zhangsan10 get name//發(fā)現(xiàn)name過(guò)期了,直接刪除key
優(yōu)點(diǎn) :對(duì)CPU友好,只會(huì)在使用該key時(shí)才會(huì)進(jìn)行過(guò)期檢查,對(duì)于很多用不到的key不用浪費(fèi)時(shí)間進(jìn)行過(guò)期檢查。
缺點(diǎn) :對(duì)內(nèi)存不友好,如果一個(gè)key已經(jīng)過(guò)期,但是一直沒有使用,那么該key就會(huì)一直存在內(nèi)存中,內(nèi)存永遠(yuǎn)不會(huì)釋放。
定期刪除:每隔一段時(shí)間,我們就對(duì)一些key進(jìn)行檢查,刪除里面過(guò)期的key(從一定數(shù)量的數(shù)據(jù)庫(kù)中取出一定數(shù)量的隨機(jī)key進(jìn)行檢查,并刪除其中的過(guò)期key)。
定期清理有兩種模式:
• SLOW模式是定時(shí)任務(wù),執(zhí)行頻率默認(rèn)為10hz,每次不超過(guò)25ms,以通過(guò)修改配置文件redis.conf的hz選項(xiàng)來(lái)調(diào)整這個(gè)次數(shù)
• FAST模式執(zhí)行頻率不固定,但兩次間隔不低于2ms,每次耗時(shí)不超過(guò)1ms
優(yōu)點(diǎn):可以通過(guò)限制刪除操作執(zhí)行的時(shí)長(zhǎng)和頻率來(lái)減少刪除操作對(duì)CPU的影響。另外定期刪除,也能有效釋放過(guò)期鍵占用的內(nèi)存。
缺點(diǎn):難以確定刪除操作執(zhí)行的時(shí)長(zhǎng)和頻率。Redis的過(guò)期刪除策略:惰性刪除+定期刪除兩種策略進(jìn)行配合使用
北京校區(qū)