1. 程式人生 > >redis設定key過期時間

redis設定key過期時間

redis是一個廣泛應用的key-value型記憶體資料庫,和memecached一樣,key是可以被設定生存週期的。

redis設定key的過期時間非常簡單:

SETEX mykey 10 "Hello"
這樣就給mykey設定了10秒的生存週期。

但是當你使用了redis其他的資料結構,比如LIST,HMAP等,就沒有現成的命令可以使用了。不過在redis中,上面的命令本來就等效於下面兩條命令

SET mykey value
EXPIRE mykey 10

EXPIRE可以給redis內任意型別的key設定過期時間,如給HMAP型別的key設定過期時間可以用
HSET mykey hkey "hello"
EXPIRE mykey 10

我們可以將兩條命令儲存為一個MULTI/EXEC儲存過程,或者用支援pipline的redis客戶端

下面來談一下redis過期的key的刪除機制:

不同於memcached的LAZY模式,redis對於設定了過期時間的key採用被動模式和主動模式相結合的方式:

  • 被動模式,同memcached,當過期的key被訪問時,redis會將其刪除
  • 主動模式,主動模式為redis主動觸發的一個以10秒為間隔的迴圈:
    1. 隨機測試100個key的過期時間
    2. 刪除這100個key中所有已經過期的key
    3. 如果刪除了超過25個key,立刻從第一步開始重做