HEXPIRE
语法
HEXPIRE key seconds [NX | XX | GT | LT] FIELDS numfields field [field ...]
- 可用版本
- Redis Open Source 7.4.0
- 时间复杂度
- O(N),其中 N 为指定字段的数量
- ACL 类别
-
@write
,@hash
,@fast
,
为给定哈希键的一个或多个字段设置过期时间(TTL 或生存时间)。您必须至少指定一个字段。字段的 TTL 到期时将自动从哈希键中删除。
字段的过期时间仅会被删除或覆盖哈希字段内容的命令清除,包括 HDEL
和 HSET
命令。这意味着所有在概念上修改哈希键字段值而不替换为新值的操作都不会影响 TTL。
您可以使用 HPERSIST
命令清除 TTL,该命令会将哈希字段变回持久字段。
请注意,使用零 TTL 调用 HEXPIRE
/HPEXPIRE
或使用过去的 Unix 时间调用 HEXPIREAT
/HPEXPIREAT
将导致哈希字段被删除。
选项
HEXPIRE
命令支持一组选项
NX
-- 对于每个指定字段,仅当字段没有过期时间时设置过期时间。XX
-- 对于每个指定字段,仅当字段已存在过期时间时设置过期时间。GT
-- 对于每个指定字段,仅当新的过期时间大于当前过期时间时设置过期时间。LT
-- 对于每个指定字段,仅当新的过期时间小于当前过期时间时设置过期时间。
对于 GT
和 LT
选项,非易失性字段被视为具有无限 TTL。NX
、XX
、GT
和 LT
选项是互斥的。
刷新过期时间
您可以将已设置 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 回复
以下之一