redis expire超時操作

2022-09-05 16:09:16 字數 1508 閱讀 3055

基本使用:

127.0.0.1:6379> expire user 1000

(integer)

1127.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

ok127.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的超時時間

ok127.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集中隨機測試一些鍵的過期時間,過期的鍵會被刪除。

具體機制為:

從具有過期屬性的key集中隨機抽取20個key。

刪除所有過期的key。

如果過期的key佔比超過25%,重複第一步。

在副本和aof檔案中如何處理過期

redis主節點在key過期時,會生成乙個del命令儲存到aof檔案或傳送到從節點,即從節點自己不會主動過期key,而是接受主伺服器的del,但是從節點仍然儲存著key的過期資訊,以便在主節點掛掉時,從節點在被選為主節點時有能力刪除過期的鍵。

Redis expire 相關資訊

1.expire的時間複雜度時o 1 2.當乙個key設定乙個超期時間後,超期時間只能通過刪除命令或者重寫命令清除 包括 del,set,getset 和所有的 store 命令 修改命令不能清除超期時間。修改命令包括使用incr修改值,通過lpush在list中插入乙個新值,通過hset修改對映表...

Socket超時操作

1.socket超時,伺服器端程式 coding cp936 設定超時時間 測試端程式時間設定分別大於和小於5,大於5時,使用異常來捕獲socket.timeout import socket host port 50000 s socket.socket socket.af inet,socket...

c 報「操作超時」 !!!

net 客戶端 呼叫iis 服務端 出現503後,就報操作超時錯誤 問題描述 服務端環境 iis客戶端環境 windows10 iis net 呼叫時出現如下錯誤 system.net.webexception 遠端伺服器返回錯誤 503 伺服器不可用。在 system.net.httpwebreq...