鍵過期相關(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的過期時間將被保留。