Redisson的 getLock()
方法是否适合分布式用例,它与 getRedLock()
相比如何?
Redisson(3.11.x)有几种实例化锁的方法:
getReadWriteLock()
, getFairLock()
等。getLock()
使用哪种算法,并且对分布式使用安全吗? documentation说:我想将
getLock()
与getRedLock()
进行比较,后者似乎使用Redlock,并在Redis的distlock
页面的顶层进行了记录:https://redis.io/topics/distlock:最佳答案
所有Redisson锁都适合分布式用例。 RedLock算法假定您在群集中的每个主节点上都有锁。 RedLock算法只是一个命题,不幸的是,它的实践用法没有反馈。除了analisys https://martin.kleppmann.com/2016/02/08/how-to-do-distributed-locking.html
RLock
对象作为单个对象存储在Redis中。如果释放了锁,则通过pubsub侦听器通知其他线程。还有lockWatchdogTimeout设置,该设置允许定义时间,如果当前线程不 Activity ,将在该时间后强制释放锁。
更新
从3.12.5版本开始,getLock()方法在故障转移期间以提高的可靠性返回Lock。 getRedLock()已被弃用。