为什么不用原生的redis setnx做分布式锁
时间: 2023-12-02 13:39:56 浏览: 219
SpringBoot整合Redis正确的实现分布式锁的示例代码
使用原生的 Redis setNx 命令实现分布式锁存在以下问题:
1. 没有过期时间,如果持有锁的客户端崩溃或者网络异常,其他客户端将无法获取锁。
2. 没有锁的持有者标识,即任何客户端都可以释放锁,这可能会导致误解锁或者锁被其他客户端意外释放。
3. 不支持重入,即同一个客户端在持有锁的情况下再次获取锁会失败。
因此,为了解决这些问题,需要对原生的 Redis setNx 命令进行封装或者选择使用其他的分布式锁实现方式。
阅读全文