繁体   English   中英

在Redis中使所有键默认过期

[英]Make All Keys Expire By Default In Redis

我将MSETNX( http://redis.io/commands/msetnx )用作锁定系统,从而仅当不存在任何锁定时,所有密钥才被锁定。

如果持有锁的机器死亡,则该锁将被卡住锁定-这是一个问题。

我的理想答案是,默认情况下所有密钥都将在15秒后过期 ,因此,即使机器死了,它持有的锁也会在短时间内自动重置。 这样,我不必在设置的每个键上都调用过期。

这有可能吗?

要构建高可用性的可靠锁,请查看以下文档: http : //redis.io/topics/distlock

该算法仍处于测试阶段,但在几个会话中进行了压力测试,并且无论如何都可能比单实例方法可靠得多。

有几种语言的参考实现(在文档中链接)。

Redis没有内置的方法来执行MSETNX并使所有密钥自动原子失效。 您也不能为密钥设置默认的失效期限。

您可以考虑:1.使用WATCH / MULTI / EXEC块包装多个“ SET键值EX 15 NX”,或2.使用Lua服务器端脚本执行此操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM