redis expire超時操作


基本使用:
127.0
.0.1:6379> EXPIRE user 1000 (integer) 1 127.0.0.1:6379> ttl user # 查看剩余超時時間 (integer) 996

超時重置

  有些redis命令會清除key的超時時間,如set,del,getset和所有的*Store命令。即修改redis的值而不是替換的化將不會修改key的超時時間。像incr、hset、lpush不會改變key的超時設置,也可以通過命令pexpire手動清除超時,將key變成持久的key。

     重命名key不會清除key的超時時間。

127.0.0.1:6379> set name hh
OK
127.0.0.1:6379> EXPIRE name 30
(integer) 1
127.0.0.1:6379> ttl name
(integer) 27
127.0.0.1:6379> set name h1 ## set后會清除key的超時時間
OK
127.0.0.1:6379> ttl name
(integer) -1
127.0.0.1:6379> EXPIRE name 20
(integer) 1
127.0.0.1:6379> GETSET name h2
"h1"
127.0.0.1:6379> ttl name
(integer) -1
127.0.0.1:6379> 

  修改命令不會重置超時時間

127.0.0.1:6379> LPUSH namelist hh
(integer) 1
127.0.0.1:6379> EXPIRE namelist 20
(integer) 1
127.0.0.1:6379> ttl namelist
(integer) 18
127.0.0.1:6379> lpush namelist h2
(integer) 2
127.0.0.1:6379> ttl namelist
(integer) 3

  

redis的key如何過期

  redis中key過期有兩種,主動過期和被動過期。

  被動過期:當訪問一個key時被發現過期。

  主動過期:redis會定期的從自己維護的有expire屬性的key集中隨機測試一些鍵的過期時間,過期的鍵會被刪除。

    具體機制為:

    1. 從具有過期屬性的key集中隨機抽取20個key。
    2. 刪除所有過期的key。
    3. 如果過期的key占比超過25%,重復第一步。

在副本和AOF文件中如何處理過期

  redis主節點在key過期時,會生成一個del命令保存到AOF文件或發送到從節點,即從節點自己不會主動過期key,而是接受主服務器的del,但是從節點仍然保存着key的過期信息,以便在主節點掛掉時,從節點在被選為主節點時有能力刪除過期的鍵。


免責聲明!

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



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