redis key的過期時間
阿新 • • 發佈:2018-12-22
設定redis key的生存過期時間
Redis 有四個不同的命令可以用於設定鍵的生存時間(鍵可以存在多久)或過期時間(鍵什麼時候會被刪除) :
- EXPlRE
- PEXPIRE
- EXPIREAT
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