SETNX 做分布式锁太简陋?Redisson 才是生产级方案。看门狗自动续期、Hash 结构实现可重入、Lua 脚本保证原子性——从源码级别彻底搞懂 Redisson 分布式锁。
一、SETNX 方案的问题
基础 SETNX 方案:
SET lock:order:123 1 NX EX 30 # 加锁(30s 过期)
问题:
1. 业务执行超过 30s → 锁自动释放 → 其他线程获取锁 → 并发问题
2. 线程 A 超时释放锁 → 线程 B 获取锁 → 线程 A 执行完删除锁 → 删了 B 的锁
3. 不可重入:同一线程再次获取锁会失败
4. 无法等待:获取失败只能轮询
5. 无公平性
Redisson 解决方案:
1. 看门狗(Watchdog)→ 自动续期
2. UUID:threadId 标识 → 不会删错锁
3. Hash 结构 → 可重入
4. Pub/Sub → 通知等待
5. 公平锁支持
2026/7/3大约 8 分钟