*Redis HPEXPIRE 命令

HPEXPIRE 为 Hash 中的指定字段设置以毫秒为单位的过期时间(Redis 7.4+)。


*语法

HPEXPIRE key milliseconds [NX | XX | GT | LT] field [field ...]

*参数说明

参数 类型 必填 说明
key String Hash 键名
milliseconds Integer 过期时间(毫秒)
field String 字段名,支持多个
NX Flag 仅在字段无过期时间时设置
XX Flag 仅在字段已有过期时间时更新
GT Flag 仅在新过期时间大于当前时设置
LT Flag 仅在新过期时间小于当前时设置

*返回值

  • Integer:成功设置过期的字段数量
  • Array:详细结果(Redis 7.4+ 扩展格式)

*时间复杂度

O(1) 每字段


*示例

*基本用法

> HSET user:1 name "Alice" temp "value"
(integer) 2
> HPEXPIRE user:1 60000 temp
(integer) 1

*条件设置

> HPEXPIRE user:1 30000 NX name
(integer) 1
> HPEXPIRE user:1 30000 NX name
(integer) 0

*常见错误

错误 原因 解决
WRONGTYPE key 不是 Hash 确认 key 类型
ERR value is not an integer milliseconds 非整数 使用正整数

*最佳实践

  • 使用字段级过期实现 Hash 内数据的自动清理
  • 配合 NX 避免覆盖已有过期时间
  • 适合实现 Hash 内的临时字段和缓存数据

*FAQ

Q1: HPEXPIRE 和 HEXPIRE 有什么区别? A: HPEXPIRE 使用毫秒;HEXPIRE 使用秒(如果存在)。

Q2: 字段过期后 Hash 会怎样? A: 字段被自动删除,如果 Hash 为空则整个 key 被删除。

Q3: 可以查看字段的剩余时间吗? A: 使用 HPTTL key field 查看字段剩余时间(毫秒)。