redis键过期

键过期相关命令:expire、ttl、expireat、pexpire、pexpireat、pttl、persist等。

1. expire

命令:EXPIRE key seconds
返回值:
1:设置成功
0:键不存在
时间复杂度: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

为键设置一个seconds秒的过期时间。

2. pexpire

PEXIRE key milliseconds
键在milliseconds毫秒后过期。用法同expires。

3. expireat

EXPIREAT key timestamp
返回值:
1:设置成功
0:键不存在
时间复杂度: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> 

键在未来的指定时间过期,但这里的时间需要转换为时间戳。

4. pexpireat

PEXPIREAT key milliseconds-timestamp
键在毫秒级时间戳后过期。用法同expirat。

5. persist

PERSIST key
返回值:
1:键的过期时间被移除
0:键不存在或键未设置过期时间
时间复杂度: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的整数:键剩余的过期时间
-1:键没有设置过期时间
-2:键不存在
时间复杂度:O(1)

PTTL key
返回毫秒级的剩余过期时间,精度更高。用法同ttl。

7. setex

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

setex key seconds value
作为set+expire的组合,可以实现原子执行,同事减少一次网络通讯的时间。


无论是使用过期时间还是时间戳,秒级还是毫秒级,在Redis内部最终使用的都是pexpireat。

如果过期时间为负值,键立即被删除。

如果键设置过过期时间,再执行设置过期时间的命令,会将之前设置的过期时间覆盖掉。

使用DEL和SET、GETSET等具有“存储”意义的命令时,会将之前设置的过期时间清除或覆盖。

RENAME key newkey 原key的过期时间将被保留。

你可能感兴趣的:(redis键过期)