我使用 MSETNX ( http://redis.io/commands/msetnx ) 作为锁定系统,只有当不存在任何锁时,所有的键才会被锁定。
如果持有锁的机器挂掉了,那把锁就会被锁住——这是个问题。
我的理想答案是默认情况下所有 key 在 15 秒内过期,因此即使机器死机,它持有的锁也会在短时间内自动重置。这样我就不必在我设置的每个键上调用 expire。
这有可能吗?
最佳答案
要构建高可用的可靠锁,请查看此文档:http://redis.io/topics/distlock
该算法仍处于测试阶段,但在几个 session 中进行了压力测试,并且可能比单实例方法可靠得多。
有几种语言的引用实现(链接在文档中)。
关于redis - 在 Redis 中使所有键默认过期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24785702/