*Redis PEXPIRETIME 命令
PEXPIRETIME 返回指定 key 的绝对过期时间(Unix 时间戳,毫秒)。
*语法
PEXPIRETIME key
*参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| key | String | 是 | 键名 |
*返回值
- Integer:key 的绝对过期时间(Unix 时间戳,毫秒)
- -1:key 存在但没有设置过期时间
- -2:key 不存在
*时间复杂度
O(1)
*
*示例
*查看有过期时间的 key
> SET mykey "hello"
OK
> PEXPIREAT mykey 1893456000000
(integer) 1
> PEXPIRETIME mykey
(integer) 1893456000000
*无过期时间的 key
> SET persistkey "value"
OK
> PEXPIRETIME persistkey
(integer) -1
*key 不存在的场景
> PEXPIRETIME notexist
(integer) -2
*常见错误
| 错误 | 原因 | 解决 |
|---|---|---|
| ERR wrong number of arguments | 未提供 key 参数 | 补充 key 参数 |
*最佳实践
- 需要获取 key 的精确过期时间戳时,使用 PEXPIRETIME(毫秒精度)优于 EXPIRETIME(秒精度)
- 配合 PEXPIREAT / PEXPIRE 使用,实现过期时间的完整生命周期管理
- 返回 -1 表示 key 永不过期,可用于检查 key 是否应被持久化存储
- 返回 -2 可用于区分 key 不存在和 key 无过期时间两种情况
*FAQ
Q1: PEXPIRETIME 和 PTTL 有什么区别?
A: PEXPIRETIME 返回绝对过期时间戳(毫秒),PTTL 返回相对剩余时间(毫秒)。两者可通过 PEXPIRETIME = 当前时间 + PTTL 换算。
Q2: PEXPIRETIME 和 EXPIRETIME 有什么区别? A: PEXPIRETIME 返回毫秒级 Unix 时间戳,EXPIRETIME 返回秒级 Unix 时间戳。PEXPIRETIME 精度更高。
Q3: 返回 -1 和 -2 分别代表什么? A: -1 表示 key 存在但没有设置过期时间(永不过期);-2 表示 key 不存在。两者含义不同,处理逻辑时需区分。