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