是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,我们认为它比普通的单示例方法更安全。
1条答案
按热度按时间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()已被弃用。