Redis中有個設置時間過期的功能,即對存儲在 Redis 數據庫中的值可以設置一個過期時間。
作為一個緩存數據庫, 這是非常實用的,比如一些 token 或者登錄信息,尤其是短信驗證碼都是有時間 限制的,按照傳統的數據庫處理方式,一般都是自己判斷過期,這樣無疑會嚴重影響項目性能。
我們 set key 的時候,都可以給一個 expire time,就是過期時間,通過過期時間我們可以指定這個 key 可 以存活的時間,主要可采用定期刪除和惰性刪除兩種方案。
1.定期刪除:Redis默認是每隔 100ms 就隨機抽取一些設置了過期時間的key,檢查其是否過期,如果過 期就刪 除。注意這里是隨機抽取的。為什么要隨機呢?你想一想假如 Redis 存了幾十萬個 key ,每隔 100ms就遍歷所 有的設置過期時間的 key 的話,就會給 CPU 帶來很大的負載!
2.惰性刪除 :定期刪除可能會導致很多過期 key 到了時間並沒有被刪除掉。所以就有了惰性刪除。它 是指某個鍵值過期后,此鍵值不會馬上被刪除,而是等到下次被使用的時候,才會被檢查到過期,此時才能 得到刪除,惰性刪除的缺點很明顯是浪費內存。 除非你的系統去查一下那個 key,才會被Redis給刪除 掉。這就是所謂的惰性刪除!