Redis 過期鍵的設置、獲取和刪除過期時間
阿新 • • 發佈:2018-03-15
sans tle 整數 時間 lis class 情況下 title 結構
Redis 過期鍵的設置、獲取和刪除過期時間
轉自http://blog.51cto.com/littledevil/1813956設置過期
默認情況下鍵是沒有生存時間的,也就是永不過期,除非清空內存。
設置的鍵的生存時間也很容易,可以通過4個命令設置(任選一即可):EXPIRE、PEXPIRE、EXPIREAT、PEXPIREAT命令,這4個命令看起來不同但是背後實現原理都是一樣的。常用的其實就是EXPIRE和PEXPIRE這兩個,前者是以秒設置過期時間,後者是以毫秒。
以秒來設置,設置aaa這個鍵1秒後過期,1秒中以後再獲取aaa這個鍵則返回空。
以毫秒來設置,設置bbb這個鍵10毫秒後過期。
命令 | 說明 |
EXPIREkey #s | 將KEY的生存時間設置為#秒 |
PEXPIREkey #ms | 將KEY的生存時間設置為#毫秒 |
EXPIREATkey timestamp | 將KEY的生存時間設置為UNIX時間戳,單位為秒 |
PEXPIREATkey timestamp | 將KEY的生存時間設置為UNIX時間戳,單位為毫秒 |
上面這4個命令只是單位和表現形式上的不同,但實際上EXPIRE、PEXPIRE以及EXPIREAT命令的執行最後都會使用PEXPIREAT來實行。
比如使用EXPIRE來設置KEY的生存時間為N秒,那麽後臺是如何運行的呢:
-
它會調用PEXPIRE命令把N秒轉換為M毫秒
-
然後獲取當前的UNIX時間單位也是毫秒
-
把當前UNIX時間加上M毫秒傳遞給PEXPREAT
給鍵設置了過期時間,這個時間保存在一個字典裏,也是鍵值結構,鍵是一個指針,指向真實的鍵,而值這是一個長整型的UNIX時間。
獲取鍵的過期時間
如何查看一個鍵的生存時間多多少呢?可以使用ttl key來獲取(以秒來顯示),如下圖:
另外還有一個命令是pttl key這個是以毫秒顯示。
清除鍵的過期時間
可以使用PERSIST命令移除一個鍵的過期時間,如下圖:
過期時間返回值的說明
通過ttl可以獲取一個鍵的整數返回值
值 | 說明 |
-2 | 過期且已刪除 |
-1 | 沒有過期時間設置,即永不過期 |
>0 | 表示距離過期還有多少秒或者毫秒 |
Redis 過期鍵的設置、獲取和刪除過期時間