HEXPIREAT

使用绝对 Unix 时间戳(秒)设置哈希字段的过期时间

语法

HEXPIREAT key unix-time-seconds [NX | XX | GT | LT] FIELDS numfields field [field ...]

引入版本:7.4.0

复杂度摘要:O(N)

HEXPIREAT 与 HEXPIRE 具有相同的效果和语义,但它不指定 TTL(生存时间)的秒数,而是采用自 Unix 纪元以来以秒为单位的绝对 Unix时间戳。过去的时间戳将立即删除该字段。

该命令的具体语义请参见HEXPIRE。

必需参数

key

保存哈希值的键的名称。

unix-time-seconds

绝对 Unix 过期时间戳,自 Unix 纪元以来以秒为单位。过去的时间戳会立即删除该字段。

FIELDS numfields field [field ...]

要设置过期时间的哈希字段。 numfields 是字段的数量,后面跟着这些字段的名称。

可选参数

以下选项修改命令的行为。它们是相互排斥的。

NX

对于每个指定字段,只有当该字段没有过期时才设置过期时间。

XX

对于每个指定字段,仅当该字段存在过期时才设置过期时间。

GT

对于每个指定字段,仅当新的过期时间大于当前的过期时间时才设置过期时间。出于 GT 的目的,非易失性键被视为无限 TTL。

LT

对于每个指定字段,仅当新的到期时间小于当前的到期时间时才设置到期时间。出于 LT 的目的,非易失性键被视为无限 TTL。

示例

redis> HSET mykey field1 "hello" field2 "world"
(integer) 2
redis> HEXPIREAT mykey 1715704971 FIELDS 2 field1 field2
1) (integer) 1
2) (integer) 1
redis> HTTL mykey FIELDS 2 field1 field2
1) (integer) 567
2) (integer) 567

Redis Software 与 Redis Cloud 兼容性

Redis
软件
Redis
Cloud
说明
✅ 标准
✅ 主动-主动
✅ 标准
✅ 主动-主动

返回值

RESP2

以下之一: * 数组回复。对于每个字段: - 整数回复: -2 如果提供的哈希键中不存在此类字段,或者提供的键不存在。 - 整数回复:0(如果未满足指定的 NX、XX、GT 或 LT 条件)。 - 整数回复:1(如果设置/更新了过期时间)。 - 整数回复:2,当使用 0 秒或毫秒调用 HEXPIRE 或 HPEXPIRE 时,或者使用过去的 Unix 时间(以秒或毫秒为单位)调用 HEXPIREAT 或 HPEXPIREAT 时。 * 简单错误回复: - 如果解析失败、缺少强制参数、指定未知参数或参数值类型错误或超出范围。 - 如果提供的键存在但不是哈希值。

RESP3

以下之一: * 数组回复。对于每个字段: - 整数回复: -2 如果提供的哈希键中不存在此类字段,或者提供的键不存在。 - 整数回复:0(如果未满足指定的 NX、XX、GT 或 LT 条件)。 - 整数回复:1(如果设置/更新了过期时间)。 - 整数回复:2,当使用 0 秒或毫秒调用 HEXPIRE 或 HPEXPIRE 时,或者使用过去的 Unix 时间(以秒或毫秒为单位)调用 HEXPIREAT 或 HPEXPIREAT 时。 * 简单错误回复: - 如果解析失败、缺少强制参数、指定未知参数或参数值类型错误或超出范围。 - 如果提供的键存在但不是哈希值。

资料来源:Redis 官方 HEXPIREAT 文档;中文内容参考 Redis 文档许可。