Skip to content

Latest commit

 

History

History
29 lines (15 loc) · 1.15 KB

File metadata and controls

29 lines (15 loc) · 1.15 KB

分布式锁

Redis 实现

典型的实现是:SETNX+GETSET 或 SETNX+EXPIRE

• SETNX:SET if Not eXists;原子性操作

• GETSET:先写新值,返回旧值;原子性操作

• Value 中存储时间戳:防止宕机或网络断开造成死锁

https://blog.csdn.net/abbc7758521/article/details/77990048

Redisson:官方客户端。https://github.com/mrniko/redisson

  • Redlock:Redis 官方的多 master 节点分布式锁解决方案

https://blog.csdn.net/hanchao5272/article/details/99695360

Zookeeper 实现

开源 Menagerie 实现:https://github.com/sfines/menagerie

• 可重入锁:ThreadLocal 存储次数

• 公平锁:JUC 的 condition

• 基于 zookeeper 的分布式锁是目前最普遍、正确性最高的实现方案