版权声明: 转载请注明出处!本文采用 知识共享 署名-非商业性使用-禁止演绎 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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
国产非关系型数据库 Eloqkv 初体验
JiekeXu
168次阅读
2025-04-10 23:51:35
Redis概要
听溪
50次阅读
2025-04-11 10:23:10
Redis改协议内幕曝光!核心开发者亲述被“踢出局”,外部贡献者几乎全跑光了!
老鱼笔记
45次阅读
2025-04-17 10:41:56
Redis数据库——Cluster集群模式
编程Cookbook
42次阅读
2025-04-16 15:34:44
安装与配置Redis
鲁鲁
42次阅读
2025-04-11 10:26:10
使用Jedis访问Redis数据库
怀念和想念
38次阅读
2025-04-11 15:08:30
Redis geo 实战:“附近的人”实现,打造社交的新维度
老王两点中
38次阅读
2025-04-11 09:02:30
Redis提供的持久化机制
luyingjun
29次阅读
2025-04-11 15:11:05
亚马逊:MemoryDB,一款内存优先的云数据库
数据库应用创新实验室
26次阅读
2025-04-18 09:54:15
优雅遍历和删除特定开头的key
陌殇流苏
24次阅读
2025-04-25 12:17:03