設置redis key的生存過期時間
Redis 有四個不同的命令可以用於設置鍵的生存時間(鍵可以存在多久)或過期時間(鍵什么時候會被刪除) :
- EXPlRE
命令用於將鍵key 的生存時間設置為ttl 秒。 - PEXPIRE
命令用於將鍵key 的生存時間設置為ttl 毫秒。 - EXPIREAT
< timestamp> 命令用於將鍵key 的過期時間設置為timestamp所指定的秒數時間戳。
PEXPIREAT< timestamp > 命令用於將鍵key 的過期時間設置為timestamp所指定的毫秒數時間戳。
redis通過exipre或則pexpire命令,可以以秒或則毫秒為精度為某個key設置過期時間,在經過指定的時間之后,redis服務器就會刪除生存時間為0的key
下面的例子中把key1的過期時間設置為20秒,過20秒后redis就會吧key1刪除
127.0.0.1:6379> set key1 'value1'
OK
127.0.0.1:6379> exipre key1 20
(error) ERR unknown command 'exipre'
127.0.0.1:6379> expire key1 20
(integer) 1
127.0.0.1:6379> get key1
"value1"
127.0.0.1:6379> get key1
"value1"
127.0.0.1:6379> get key1
(nil)
127.0.0.1:6379>
setex命令可以在設置一個字符串key的時候,同時設置該key的過期時間,因為這個命令是一個類型限定的命令(只能用於字符串鍵),但SETEX 命令設置過期時間的原理和EXPIRE命令設置過期時間的原理是完全一樣的。
與EXPlRE 命令和PEXPIRE 命令類似,客戶端可以通過EXPlREAT 命令或PEXPlREAT命令,以秒或者毫秒精度給數據庫中的某個鍵設置過期時間(expire time)。過期時間是一個UNIX時間戳,當鍵的過期時間來臨時,服務器就會自動從數據庫中刪除這個鍵:
使用方式如下
127.0.0.1:6379> set key1 'value1'
OK
127.0.0.1:6379> expireat key1 1545470885
(integer) 1
127.0.0.1:6379> time
1) "1545470897"
2) "996846"
127.0.0.1:6379> get key1
(nil)
127.0.0.1:6379>
TTL 命令和PTTL 命令接受一個帶有生存時間或者過期時間的鍵,返回這個鍵的剩余生存時間,也就是,返回距離這個鍵被服務器自動刪除還有多長時間:
127.0.0.1:6379> time
1) "1545470973"
2) "878082"
127.0.0.1:6379> set key1 'value1'
OK
127.0.0.1:6379> expireat key1 1545471973
(integer) 1
127.0.0.1:6379> ttl key1
(integer) 962
127.0.0.1:6379> ttl key1
(integer) 961
移除過期時間
PERSIST命令可以移除一個鍵的過期時間:使用方式如下:
127.0.0.1:6379> set key1 'value1'
OK
127.0.0.1:6379> time
1) "1545471314"
2) "556941"
127.0.0.1:6379> expireat key1 1545481314
(integer) 1
127.0.0.1:6379> ttl key1
(integer) 9980
127.0.0.1:6379> persits key1
(error) ERR unknown command 'persits'
127.0.0.1:6379> persist key1
(integer) 1
127.0.0.1:6379> ttl key1
(integer) -1
