HEXPIRE

语法
HEXPIRE key seconds [NX | XX | GT | LT] FIELDS numfields
  field [field ...]
可用版本
7.4.0
时间复杂度
O(N),其中 N 是命令参数的个数
ACL 类别
@write, @hash, @fast,

为给定哈希键的一个或多个字段设置过期时间(TTL 或生存时间)。您必须指定至少一个字段。当字段的 TTL 过期时,这些字段将自动从哈希键中删除。

字段过期时间只会通过删除或覆盖哈希字段内容的命令清除,包括 HDELHSET 命令。这意味着所有从概念上讲更改哈希键字段中存储的值而不会用新值替换它的操作都将保持 TTL 不变。

您可以使用 HPERSIST 命令清除 TTL,该命令将哈希字段恢复为持久字段。

请注意,使用 0 秒或毫秒 TTL 调用 HEXPIRE/HPEXPIRE 或使用过去的时间(以秒或毫秒为单位)调用 HEXPIREAT/HPEXPIREAT 将导致删除哈希字段。

选项

HEXPIRE 命令支持一组选项

  • NX -- 对于每个指定的字段,仅在该字段没有过期时间时才设置过期时间。
  • XX -- 对于每个指定的字段,仅在该字段具有现有过期时间时才设置过期时间。
  • GT -- 对于每个指定的字段,仅当新的过期时间大于当前过期时间时才设置过期时间。
  • LT -- 对于每个指定的字段,仅当新的过期时间小于当前过期时间时才设置过期时间。

非易失性字段被视为具有无限 TTL,用于 GTLT 的目的。NXXXGTLT 选项是互斥的。

刷新过期时间

您可以使用已设置现有 TTL 的字段作为参数调用 HEXPIRE。在这种情况下,生存时间将更新为新值。

示例

redis> HEXPIRE no-key 20 NX FIELDS 2 field1 field2
(nil)
redis> HSET mykey field1 "hello" field2 "world"
(integer 2)
redis> HEXPIRE mykey 10 FIELDS 3 field1 field2 field3
1) (integer) 1
2) (integer) 1
3) (integer) -2
redis> HGETALL mykey
(empty array)

RESP2/RESP3 回复

以下之一

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

RATE THIS PAGE
Back to top ↑