Redis過期設置


Redis支持按key設置過期時間,過期后值將被刪除(在客戶端看來是補刪除了的)
用TTL命令可以獲取某個key值的過期時間(-1表示永不過期)

127.0.0.1:6379> set name "ghj1976"
OK
127.0.0.1:6379> ttl name
(integer) -1

TTL key

以秒為單位,返回給定 key 的剩余生存時間(TTL, time to live)。

可用版本:
>= 1.0.0
時間復雜度:
O(1)
返回值:
當 key 不存在時,返回 -2 。
當 key 存在但沒有設置剩余生存時間時,返回 -1 。
否則,以秒為單位,返回 key 的剩余生存時間。
在 Redis 2.8 以前,當 key 不存在,或者 key 沒有設置剩余生存時間時,命令都返回 -1 。
# 不存在的 key

redis> FLUSHDB
OK

redis> TTL key
(integer) -2

# key 存在,但沒有設置剩余生存時間

redis> SET key value
OK

redis> TTL key
(integer) -1

# 有剩余生存時間的 key

redis> EXPIRE key 10086
(integer) 1

redis> TTL key
(integer) 10084

下面命令先用EXISTS命令查看key值是否存在,然后設置了5秒的過期時間。5秒只有我們再回來查看。

 

127.0.0.1:6379> set name "ghj1976"
OK
127.0.0.1:6379> exists name
(integer) 1
127.0.0.1:6379> expire name 5
(integer) 1
127.0.0.1:6379> ttl name
(integer) 1
127.0.0.1:6379> ttl name
(integer) -2
127.0.0.1:6379> exists name
(integer) 0
127.0.0.1:6379> get name
(nil)

上在是直接設置多少秒后過期,你也可以設置在某個時間點過期,下面例子是設置2011-09-24 00:40:00過期。

127.0.0.1:6379> set name "guohongjun"
OK
127.0.0.1:6379> expireat name 1316805000
(integer) 1
127.0.0.1:6379> exists name
(integer) 0
127.0.0.1:6379> get name
(nil)
127.0.0.1:6379>

PEXPIREAT key milliseconds-timestamp

這個命令和 EXPIREAT 命令類似,但它以毫秒為單位設置 key 的過期 unix 時間戳,而不是像 EXPIREAT 那樣,以秒為單位。

可用版本:
>= 2.6.0
時間復雜度:
O(1)
返回值:
如果生存時間設置成功,返回 1 。
當 key 不存在或沒辦法設置生存時間時,返回 0 。(查看 EXPIRE 命令獲取更多信息)
redis> SET mykey "Hello"
OK

redis> PEXPIREAT mykey 1555555555005
(integer) 1

redis> TTL mykey           # TTL 返回秒
(integer) 223157079

redis> PTTL mykey          # PTTL 返回毫秒
(integer) 223157079318

 

參考資料:

Redis 命令參考
http://www.redisdoc.com/en/latest/index.html

十五分鍾介紹 Redis數據結構
http://blog.nosqlfan.com/html/3202.html

Redis系統性介紹
http://blog.nosqlfan.com/html/3139.html

Redis之七種武器
http://blog.nosqlfan.com/html/2942.html

試用redis
http://try.redis.io/

Redis 設計與實現
http://www.redisbook.com/en/latest/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM