版权声明: 转载请注明出处!本文采用 知识共享 署名-非商业性使用-禁止演绎 4.0 国际许可协议
前言
如果之前看了《Redis每日一练(12):TTL、EXPIRE和EXPIREAT命令》那篇笔记,那么今天这3个命令可以用一句话带过,那就是今天这三个命令是前一篇三个命令的毫秒级版本,当然我假设你没有看过上一篇笔记,接下来直接看今天的3个命令。
PTTL
- 最早出现版本:2.6.0
- 时间复杂度:O(1)
- 命令参数:PTTL key
- 操作类型:keys
- 官方文档
作用
查询一个键的过期剩余时间,返回键的有效时间单位是毫秒,在2.6版本以前,不管指定的键是不存在还是键永久有效都会返回-1,但是从2.8版本开始,如果指定的键不存在返回-2,如果指定的键永久有效,不会过期,那么返回-1。
练习
先查看一个不会过期的键的剩余有效时间:
127.0.0.1:6379> set name albert
OK
127.0.0.1:6379> PTTL name
(integer) -1
127.0.0.1:6379>
先设置一个会过期的键,有效时间10000毫秒,有效期内查一次,过了有效期查一次:
127.0.0.1:6379> PSETEX age 10000 18
OK
127.0.0.1:6379> PTTL age
(integer) 4693
127.0.0.1:6379> PTTL age
(integer) 1232
127.0.0.1:6379> PTTL age
(integer) -2
127.0.0.1:6379> GET age
(nil)
127.0.0.1:6379>
PEXPIRE
- 最早出现版本:2.6.0
- 时间复杂度:O(1)
- 命令参数:PEXPIRE key milliseconds
- 操作类型:keys
- 官方文档
作用
与 EXPIRE 命令类似,设置一个键的过期时间,单位是毫秒,设置成功返回1,指定的键不存在返回0,如果设置的毫秒数是负值,则这个键会直接删除。
练习
对一个永久的键设置过期时间80000毫秒,查询后再使用 SET 命令覆盖过期时间,查询后设置过期时间为负数,直接将键删除:
127.0.0.1:6379> SET namr albert
OK
127.0.0.1:6379> PTTL name
(integer) -1
127.0.0.1:6379> PEXPIRE name 80000
(integer) 1
127.0.0.1:6379> PTTL name
(integer) 73730
127.0.0.1:6379> PTTL name
(integer) 67464
127.0.0.1:6379> SET name bella
OK
127.0.0.1:6379> GET name
"bella"
127.0.0.1:6379> PTTL name
(integer) -1
127.0.0.1:6379> PEXPIRE name -1
(integer) 1
127.0.0.1:6379> GET name
(nil)
127.0.0.1:6379>
PEXPIREAT
- 最早出现版本:2.6.0
- 时间复杂度:O(1)
- 命令参数:PEXPIREAT key milliseconds-timestamp
- 操作类型:keys
- 官方文档
作用
设置一个键的过期时间点,也就是说设置一个键到某年某月某日某时某分某秒某毫秒过期,这个时间点通过毫秒时间戳来指定,也就是从1970年1月1日的0点到指定过期时间的毫秒数,下面举个例子
练习
现在时间是(北京时间)2019-12-03 16:21:33,想指定在下班时间2019-12-03 18:30:00的时候过期,那么可以查一下下班时间的毫秒时间戳,通过工具查询得到1575369000000,设置一下查看结果:
127.0.0.1:6379> PEXPIREAT name 1575368979916
(integer) 1
127.0.0.1:6379> PTTL name
(integer) 7314752
127.0.0.1:6379> GET name
"albert"
127.0.0.1:6379> PTTL name
(integer) 7296292
查询剩余的过期时间还有7296292毫秒,大概2个小时,这样算下来,下班的时候这个键正好过期。
总结
- PTTL 命令是 TTL 命令毫秒级版本,返回一个键的剩余存活的毫秒数,键不存在返回-2,键不会过期返回-1。
- PEXPIRE 命令是 EXPIRE 命令的毫秒级版本,设置一个键的多少毫秒后过期,成功设置返回1,键不存在返回0。
- PEXPIREAT 命令是 EPIPIREAT 命令的毫秒级版本,参数是过期的毫秒时间戳,时间到这个时间点时键就被删除了。
2019-12-3 16:40:06
最后修改时间:2019-12-13 17:20:44
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。