*Redis EXPIRETIME 命令
EXPIRETIME 用于返回指定键的过期时间,以 Unix 时间戳(秒)表示。
*语法
EXPIRETIME key
*参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| key | String | 是 | 键名 |
*返回值
- Unix 时间戳:键的过期时间(秒)
- -1:键存在但没有设置过期时间
- -2:键不存在
*时间复杂度
O(1)
*
*示例
*基本用法
> SET mykey "hello" EX 3600
OK
> EXPIRETIME mykey
1717500000
*没有过期时间的键
> SET mykey "hello"
OK
> EXPIRETIME mykey
-1
*不存在的键
> EXPIRETIME nonexistent
-2
*常见错误
| 错误 | 原因 | 解决 |
|---|---|---|
| ERR wrong number of arguments | 参数数量不足 | 提供 key 参数 |
*最佳实践
- 场景:获取缓存的精确失效时间、调试过期策略
- 与 TTL 的区别:TTL 返回剩余秒数,EXPIRETIME 返回绝对时间戳
- 建议在需要跨客户端同步过期时间时使用 EXPIRETIME
- 配合 PEXPIRETIME 可以获取毫秒级精度的时间戳
*FAQ
Q1: EXPIRETIME 和 TTL 有什么区别? A: TTL 返回剩余秒数(相对时间),EXPIRETIME 返回绝对 Unix 时间戳。TTL 会随时间递减,EXPIRETIME 是固定值。
Q2: 返回 -1 和 -2 分别代表什么? A: -1 表示键存在但没有过期时间;-2 表示键不存在。
Q3: 时间戳是基于服务器时间还是客户端时间? A: 基于 Redis 服务器时间,建议使用 TIME 命令获取服务器当前时间进行比对。