redis key的過期時間


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


免責聲明!

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



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