典型的实现是: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
开源 Menagerie 实现:https://github.com/sfines/menagerie
• 可重入锁:ThreadLocal 存储次数
• 公平锁:JUC 的 condition
• 基于 zookeeper 的分布式锁是目前最普遍、正确性最高的实现方案