- 分布式锁要保证互斥性、不死锁、可重入等特点。互斥性指的是对于同一个资源,任意时刻,都只有一个客户端能持有锁。不死锁指的是必须要有锁超时这种机制,保证在出现问题的时候释放锁,不会出现死锁的问题。可重入指的是对于同一个线程,可以多次重复加锁
| 方式 | 优点 | 缺点 |
|---|---|---|
| 数据库 | 实现简单,易于理解 | 对数据库压力大 |
| Redis | 易于理解 | 自己实现,不支持阻塞 |
| Zookeeper | 支持阻塞 | 需要理解Zookeeper.程序复杂 |
| Curator | 已经提供了实现锁的方法 | 依赖Zookeeper |
| Redissson | 已提供了完整的锁方法 |
通过上述比较,个人还是比较喜欢使用Redissson。参考文档



