连接关闭时到期键

时间:2013-06-13 05:19:39

标签: redis

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

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

1 个答案:

答案 0 :(得分:0)

不,redis不会为你做这件事(你只能在客户端这样做)

为缓解此死锁问题,您可以做的是存储上次获取的时间戳,并使用该时间戳来确定锁是否仍然有效或是否存在死锁。

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

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

编辑:

如果LUA是您的选项,那么您不需要客户端具有同步时钟