文章目录
- 一. 部署图
- 二. RedLock算法简单介绍
- 加锁
- 解锁
一. 部署图
各redis独立部署,各自独立
二. RedLock算法简单介绍
加锁
- 应用程序获取系统当前时间
- 应用程序使用相同的kv值依次从多个redis实例中获取锁。
如果某一个节点超过一定时间依然没有获取到锁则直接放弃,尽快尝试从下一个健康的redis节点获取锁,以避免被一个宕机了的节点阻塞 - 计算获取锁的消耗时间 = 客户端程序的系统当前时间 - step1中的时间。
- 获取锁的消耗时间 < 总的锁定时间(30s) 并且半数以上节点获取锁成功,则认为获取锁成功
- 计算剩余锁定时间:总的锁定时间 - step3中的消耗时间
- 若获取锁失败,对所有的redis节点释放锁
解锁
对所有的redis节点释放锁即可