redison getlock()对分布式锁使用安全吗?

nwo49xxi  于 2021-06-09  发布在  Redis
关注(0)|答案(1)|浏览(413)

是redisson的 getLock() 方法适合于分布式用例,它与 getRedLock() ?
Redison(3.11.x)有几种方法来示例化锁:
redisonClient.getlock()
redisonClient.getredlock()
其他人喜欢 getReadWriteLock() , getFairLock() 等等。
算法做什么 getLock() 使用,分布式使用是否安全?文件上说:
实现非公平锁定,因此不保证线程的获取顺序。
我想比较一下 getLock()getRedLock() ,它似乎使用了redlock,并记录在redis文档的顶层 distlock 页码:https://redis.io/topics/distlock:
本页试图提供一种更规范的算法,用redis实现分布式锁。我们提出了一个称为redlock的算法,它实现了一个dlm,我们认为它比普通的单示例方法更安全。

aiqt4smr

aiqt4smr1#

redison的getlock()方法适合分布式用例吗?它与getredlock()相比如何?
所有redisson锁都适合分布式用例。redlock算法假设集群中每个主节点都有锁。红锁算法是一个很好的命题,但遗憾的是,它的实际应用并没有反馈。除了它的分析https://martin.kleppmann.com/2016/02/08/how-to-do-distributed-locking.html
getlock()使用什么算法,分布式使用安全吗? RLock 对象作为单个对象存储在redis中。如果锁被释放,其他线程将通过pubsub侦听器得到通知。还有一个lockwatchdogtimeout设置允许定义一个时间,在这个时间之后,如果当前线程不活动,锁将被强制释放。
更新自3.12.5版本getlock()方法在故障转移期间返回可靠性提高的锁。getredlock()已被弃用。

相关问题