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命令,这会将哈希字段转换回持久字段。

请注意,调用HEXPIRE/HPEXPIRE如果 TTL 为零,或者HEXPIREAT/HPEXPIREATwith a time in past 将导致哈希字段被删除。

选项

HEXPIRE命令支持一组选项:

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

非易失性字段被视为无限 TTL,以便GTLT. 这NX,XX,GTLT选项是互斥的。

刷新过期

您可以调用HEXPIRE使用已具有 现有 TTL 集。 在这种情况下,生存时间将更新为新值。

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 时间(以秒/毫秒为单位)调用。
  • 简单的错误回复
    • 如果解析失败,则缺少必需参数、指定了未知参数或参数值类型错误或超出范围。
    • 如果提供的密钥存在但不是哈希值。

为本页评分
返回顶部 ↑