1. 程式人生 > >Redis 過期策略

Redis 過期策略

redis設定過期時間

expire key time(以秒為單位)–這是最常用的方式
setex(String key, int seconds, String value)–字串獨有的方式

除了字串自己獨有設定過期時間的方法外,其他方法都需要依靠expire方法來設定時間,如果沒有設定時間,那快取就是永不過期。

三種過期策略

1.定時刪除

在設定key的過期時間時,為key建立一個定時器,讓定時器在key的過期時間來臨時,對key進行刪除。

優點:記憶體會被儘快釋放,對記憶體友好。

缺點:若過期key很多,刪除這些key會佔用很多的CPU時間,對CPU不友好,若為每一個設定過期時間的key建立一個定時器(產生大量定時器),效能影響嚴重。

2.惰性刪除

每次通過取key值的時候檢查是否過期,若過期,則刪除,返回null。

優點:刪除操作只發生在通過key取值時發生,而且只刪除當前key,對CPU友好。

缺點:若大量的key在超出超時時間後,很久一段時間內,都沒有被獲取過,那麼可能發生記憶體洩露(無用的垃圾佔用了大量的記憶體)

3.定期刪除

每隔一段時間執行一次輪詢刪除過期key

優點:通過限制刪除操作的時長和頻率,一定程度上減少刪除操作對CPU的佔用和降低惰性刪除對記憶體佔用的缺點。

缺點:在記憶體友好方面,不如定時刪除,在CPU時間友好方面,不如惰性刪除。

難點:如何設定時長和頻率。

memcached與redis

memcached只使用了惰性策略,redis使用了惰性和定期策略。