Redisson getLock() 对于分布式锁的使用安全吗?

Is Redisson getLock() Safe for Distributed Lock Usage?

是Redisson的getLock() method good for a distributed use case, and how does it compare to getRedLock()吗?

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

getLock() 使用什么算法,分布式使用安全吗? documentation 说:

Implements a non-fair locking so doesn't guarantees an acquire order by threads.

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

This page is an attempt to provide a more canonical algorithm to implement distributed locks with Redis. We propose an algorithm, called Redlock, which implements a DLM which we believe to be safer than the vanilla single instance approach.

Is Redisson's getLock() method good for a distributed use case, and how does it compare to getRedLock()?

所有 Redisson 锁都适合分布式用例。 RedLock 算法假定您在集群中的每个主节点都拥有锁。 RedLock 算法是一个命题,不幸的是没有关于它的实践使用的反馈。除了它的分析 https://martin.kleppmann.com/2016/02/08/how-to-do-distributed-locking.html

What algorithm does getLock() use, and is it safe for distributed usage?

RLock 对象在 Redis 中存储为单个对象。如果锁被释放,其他线程将通过 pubsub 侦听器得到通知。还有 lockWatchdogTimeout 设置允许定义时间,如果当前线程不活动,锁定将在该时间后强制释放。

更新 自 3.12.5 版本 getLock() 方法 returns 在故障转移期间锁定具有更高的可靠性。 getRedLock() 已被弃用。