如果redis中沒有設定expire過期時間,那麼redis中的資料將會是永久有效的,不會被自動刪除 (在不超過最大記憶體的情況下),但是redis無論有沒有設定expire,他都會遵循redis的配置好的刪除機制,在配置檔案裡設定:
redis最大記憶體不足"時,資料清除策略,預設為"volatile-lru"。
volatile-lru ->對"過期集合"中的資料採取lru(近期最少使用)演算法.如果對key使用"expire"指令指定了過期時間,那麼
此key將會被新增到"過期集合"中。將已經過期/lru的資料優先移除.如果"過期集合"中全部移除仍不能滿足記憶體需求,將oom.
allkeys-lru ->對所有的資料,採用lru演算法
volatile-random ->對"過期集合"中的資料採取"隨即選取"演算法,並移除選中的k-v,直到"記憶體足夠"為止. 如果如果"過期集合"
中全部移除全部移除仍不能滿足,將oom
allkeys-random ->對所有的資料,採取"隨機選取"演算法,並移除選中的k-v,直到"記憶體足夠"為止
volatile-ttl ->對"過期集合"中的資料採取ttl演算法(最小存活時間)
,移除即將過期的資料.
noeviction -
>不做任何干擾操作,直接返回oom異常
(待續)
redis過期時間
在redis中,可以給乙個鍵設定過期時間,等時間到了以後,該鍵會被自動刪除。這個機制經常被用來儲存驗證碼等有一定時效性的東西,資料的有效期過了以後,就會被自動刪除以節省記憶體空間。跟過期相關的命令有三個,分別是expire persist和ttl,用法如下 來看個簡單的例子 0.1 6379 set...
Redis時間過期處理
目的 業務邏輯為利用usertoken為key在redis中儲存,當不操作時間超過20分鐘時,清空redis,使得使用者重新登入。redis對儲存值的過期處理實際上是針對該值的鍵 key 處理的,即時間的設定也是設定key的有效時間。expires字典儲存了所有鍵的過期時間,expires也被稱為過...
Redis 設定過期時間
redis 中有個設定時間過期的功能,即對儲存在 redis 資料庫中的值可以設定乙個過期時間。作為乙個快取資料庫,這是非常實用的。比如,一般專案中的 token 或是 cookie 資訊,尤其是簡訊驗證碼,都是有時間限制的,按照傳統的資料庫處理方式,一般都是自己判斷過期,這樣無疑會嚴重影響專案效能...