Redis 创建一个带有过期时间的 Set

问题描述 投票:0回答:2

当我创建一个新集合(使用

SADD
)时,我需要设置该集合的到期时间。 有没有办法创建一个有有效期的 Set key?

注意:我需要在一个命令中执行此操作,因为我的程序在更新它之前会检查该集合是否存在 - 因此,如果它存在并且没有过期,则不会发生更新。 我的程序在AWS上运行,因此如果我将其拆分为2个命令,则只能执行创建而不会过期(过去发生在我身上)。 谢谢!

除了使用

EXPIRE
命令之外,我找不到在 Set 上设置过期时间的方法 - 程序存在在
EXPIRE
命令之前崩溃的风险(即 AWS 服务因任何原因重新启动)并且 Set 存在但没有过期.

编辑:我找到了一个解决方法,当我可以检查密钥的

TTL
是否是 < 0 instead of
EXISTS
时,因此,如果
EXPIRE
由于某种原因不起作用,我无论如何都会更新该集。这会有所帮助,但我更喜欢在 Set 过期时节省流量,并发送一个命令(即过期的
SADD
)而不是
SADD
EXPIRE

redis
2个回答
0
投票

使用交易怎么样?例如:

multi
sadd key member1 member2 ...
expire key seconds
exec

保证sadd和expire将作为一个单元在节点和副本上执行(如果您使用的话)。如果您使用pipelined,则不需要从客户端进行多轮操作,因此性能影响很小/没有影响。


0
投票

您现在也可以通过一个命令来完成此操作:

set key_name value EX 60

60 等于删除之前的 60 秒

© www.soinside.com 2019 - 2024. All rights reserved.