1. 程式人生 > >Redis 過期鍵的設置、獲取和刪除過期時間

Redis 過期鍵的設置、獲取和刪除過期時間

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 過期鍵的設置、獲取和刪除過期時間