*Redis TTL 命令
返回 key 剩余的生存时间(秒)。
*语法
TTL key
*参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| key | String | 是 | 键名 |
*返回值
| 条件 | 返回值 |
|---|---|
| key 存在且有 TTL | 剩余秒数 |
| key 存在但无 TTL | -1 |
| key 不存在 | -2 |
*时间复杂度
O(1)
*
*示例
> SET mykey hello EX 100
OK
> TTL mykey
(integer) 97
# 永不过期
> SET permkey value
> TTL permkey
(integer) -1
# 不存在
> TTL nokey
(integer) -2
*常见错误
- 混淆 -1 和 -2:-1 表示 key 存在但无 TTL;-2 表示 key 不存在。
- 过期精度:TTL 返回的是秒,实际过期可能存在秒级误差。
*最佳实践
- 缓存诊断:用 TTL 检查缓存是否设置了合理的过期时间。
- 会话续期:TTL < 阈值时重新 EXPIRE,实现会话保持。
- 需要毫秒精度:使用
PTTL key返回毫秒级剩余时间。
*FAQ
Q: TTL 返回负数是什么意思? A: -1 = key 存在但无过期时间;-2 = key 不存在。