键过期相关命令: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的过期时间将被保留。
网友评论