1. 程式人生 > >redis key的過期時間

redis key的過期時間

設定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