redis鍵過期

鍵過期相關(guān)命令:expire、ttl、expireat、pexpire、pexpireat、pttl、persist等。

1. expire

命令:EXPIRE key seconds
返回值:
1:設(shè)置成功
0:鍵不存在
時間復(fù)雜度:O(1)

127.0.0.1:6379> set test1 value1
OK
127.0.0.1:6379> expire test1 100
(integer) 1
127.0.0.1:6379> expire test2 100
(integer) 0

為鍵設(shè)置一個seconds秒的過期時間。

2. pexpire

PEXIRE key milliseconds
鍵在milliseconds毫秒后過期。用法同expires。

3. expireat

EXPIREAT key timestamp
返回值:
1:設(shè)置成功
0:鍵不存在
時間復(fù)雜度:O(1)

127.0.0.1:6379> set test1 value1
OK
127.0.0.1:6379> expireat test1 1611578391
(integer) 1
127.0.0.1:6379> expireat test3 1611578392
(integer) 0
127.0.0.1:6379> 

鍵在未來的指定時間過期,但這里的時間需要轉(zhuǎn)換為時間戳。

4. pexpireat

PEXPIREAT key milliseconds-timestamp
鍵在毫秒級時間戳后過期。用法同expirat。

5. persist

PERSIST key
返回值:
1:鍵的過期時間被移除
0:鍵不存在或鍵未設(shè)置過期時間
時間復(fù)雜度:O(1)

127.0.0.1:6379> set test1 value1
OK
127.0.0.1:6379> expire test1 1000
(integer) 1
127.0.0.1:6379> PERSIST test1
(integer) 1
127.0.0.1:6379> ttl test1
(integer) -1
127.0.0.1:6379> get test1
"value1"

清除鍵的過期時間。

6. ttl和pttl

TTL key
返回值:
大于等于0的整數(shù):鍵剩余的過期時間
-1:鍵沒有設(shè)置過期時間
-2:鍵不存在
時間復(fù)雜度:O(1)

PTTL key
返回毫秒級的剩余過期時間,精度更高。用法同ttl。

7. setex

set key value [EX seconds] [PX milliseconds] [NX|XX]

setex key seconds value
作為set+expire的組合,可以實現(xiàn)原子執(zhí)行,同事減少一次網(wǎng)絡(luò)通訊的時間。


無論是使用過期時間還是時間戳,秒級還是毫秒級,在Redis內(nèi)部最終使用的都是pexpireat。

如果過期時間為負值,鍵立即被刪除。

如果鍵設(shè)置過過期時間,再執(zhí)行設(shè)置過期時間的命令,會將之前設(shè)置的過期時間覆蓋掉。

使用DEL和SET、GETSET等具有“存儲”意義的命令時,會將之前設(shè)置的過期時間清除或覆蓋。

RENAME key newkey 原key的過期時間將被保留。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容