繁体   English   中英

连接关闭时过期密钥

[英]Expiring key on connection close

我试图使用Redis获得分布式锁定。 谷歌搜索后,我找到了一个解决方案https://github.com/jeffomatic/redis-exp-lock-js/blob/master/js/lib/redis_lua.js

但是此解决方案的问题是:如果应用程序崩溃。 无法在超时之前恢复锁定。 我想要的是,在连接关闭时自动使密钥失效。 Redis中是否有任何命令/过期设置? 用于使连接上的密钥到期时关闭。

不,redis不能为您做到这一点(您只能在客户端执行此操作)

缓解此死锁问题的方法是存储上一次获取的时间戳,并使用该时间戳确定锁是否仍然有效或是否为死锁。

如果存储在锁中的值设置得太早(例如current_time-lock_time> timeout),则获得该锁的客户端将忽略该锁。

注意:这需要同步客户的时钟。

编辑:

如果您可以选择LUA,则不需要客户端同步时钟

暂无
暂无

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

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