Redisson getLock()是否可安全使用分布式锁?

时间:2020-03-07 00:09:36

标签: java concurrency redis distributed-computing redisson

Redisson的getLock()方法是否适合分布式用例?与getRedLock()相比,该方法如何?

Redisson(3.11.x)有几种实例化锁的方法:

getLock()使用哪种算法,对于分布式使用来说安全吗? documentation说:

实施不公平锁定,因此不能保证按线程获得获取顺序。

我希望将getLock()getRedLock()(似乎使用Redlock)进行比较,并记录在Redis的distlock页面的顶层:https://redis.io/topics/distlock: / p>

此页面试图提供一种更规范的算法来实现Redis的分布式锁。我们提出了一种称为Redlock的算法,该算法实现了DLM,我们认为它比普通的单实例方法更安全。

1 个答案:

答案 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()已被弃用。