SETNX命令简介 SETNX 是SET if Not eXists的简写。html
1、https://blog.csdn.net/lihao21/article/details/49104695 把分布式锁的几个关键点和隐含的坑(解决死锁),说的比较清楚。网络
2、https://blog.csdn.net/thc1987/article/details/80355155 【转】基于Redis Lua脚本实现的分布式锁(Java实现) 讲的很细,提到了,设计锁,两个潜在的陷阱。分布式
3、进阶1 其余比较成熟的有竞争力的实现 https://www.cnblogs.com/ironPhoenix/p/6048467.html 用Redis构建分布式锁-RedLock(真分布).net
在不一样进程须要互斥地访问共享资源时,分布式锁是一种很是有用的技术手段。实现高效的分布式锁有三个属性须要考虑:设计
在描述咱们的设计以前,咱们想先提出三个属性,这三个属性在咱们看来,是实现高效分布式锁的基础。htm
一致性:互斥,无论任什么时候候,只有一个客户端能持有同一个锁。
分区可容忍性:不会死锁,最终必定会获得锁,就算一个持有锁的客户端宕掉或者发生网络分区。
可用性:只要大多数Redis节点正常工做,客户端应该都能获取和释放锁。blog
4、进阶2 其余比较成熟的有竞争力的实现2 https://www.jianshu.com/p/cc9762a1486c Spring boot用RedLock实现分布式锁进程