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/
