HEXPIRE
语法
HEXPIRE key seconds [NX | XX | GT | LT] FIELDS numfields field [field ...]
- 从以下位置开始可用:
- 7.4.0
- 时间复杂度:
- O(N),其中 N 是指定字段的数量
- ACL 类别:
-
@write
,@hash
,@fast
,
在给定哈希键的一个或多个字段上设置过期时间(TTL 或生存时间)。您必须至少指定一个字段。 当字段的 TTL 过期时,字段将自动从哈希密钥中删除。
字段过期只能通过删除或覆盖
哈希字段的内容,包括HDEL
和HSET
命令。
这意味着,在概念上更改存储在哈希键字段的值而不将其替换为新值的所有作都将保持 TTL 不变。
您可以使用HPERSIST
命令,这会将哈希字段转换回持久字段。
请注意,调用HEXPIRE
/HPEXPIRE
如果 TTL 为零,或者HEXPIREAT
/HPEXPIREAT
with a time in past 将导致哈希字段被删除。
选项
这HEXPIRE
命令支持一组选项:
NX
-- 对于每个指定的字段,仅当字段没有过期时间时,才设置过期时间。XX
-- 对于每个指定的字段,仅当该字段具有现有过期时间时,才设置过期时间。GT
-- 对于每个指定的字段,仅当新的过期时间大于当前过期时间时,才设置 expilation。LT
-- 对于每个指定的字段,仅当新的过期时间小于当前时间时,才设置 expirate。
非易失性字段被视为无限 TTL,以便GT
和LT
.
这NX
,XX
,GT
和LT
选项是互斥的。
刷新过期
您可以调用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 回复
以下选项之一: