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