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

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

  • RedissonClient.getLock()
  • RedissonClient.getRedLock()
  • 其他像 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()已被弃用。

    10-04 13:10