*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 命令获取服务器当前时间进行比对。