Redisson的getLock()
方法是否适合分布式用例?与getRedLock()
相比,该方法如何?
Redisson(3.11.x)有几种实例化锁的方法:
getLock()
使用哪种算法,对于分布式使用来说安全吗? documentation说:
实施不公平锁定,因此不能保证按线程获得获取顺序。
我希望将getLock()
与getRedLock()
(似乎使用Redlock)进行比较,并记录在Redis的distlock
页面的顶层:https://redis.io/topics/distlock: / p>
此页面试图提供一种更规范的算法来实现Redis的分布式锁。我们提出了一种称为Redlock的算法,该算法实现了DLM,我们认为它比普通的单实例方法更安全。
答案 0 :(得分:1)
Redisson的getLock()方法适合于分布式用例,它与getRedLock()相比如何?
所有Redisson锁都适合分布式用例。 RedLock算法假定您在群集中的每个主节点上都有锁。 RedLock算法只是一个命题,不幸的是,它的实践用法没有反馈。除了analisys https://martin.kleppmann.com/2016/02/08/how-to-do-distributed-locking.html
getLock()使用哪种算法,并且对分布式使用安全吗?
RLock
对象在Redis中存储为单个对象。如果释放了锁,则通过pubsub侦听器通知其他线程。还有一个lockWatchdogTimeout设置,该设置允许定义时间,如果当前线程不活动,将在该时间后强制释放锁。
更新 从3.12.5版本开始,getLock()方法在故障转移期间返回具有改进可靠性的Lock。 getRedLock()已被弃用。