目录 单机上的锁和分布式锁的联系与区别 分布式锁的两个要求 基于单个 Redis 节点实现分布式锁 上锁 解锁 上锁、判断、解锁如何保证原子性? setnx 风险点1 :未释放锁 解决: 锁变量设置一个过期时间 风险点2 :B释放了A得锁 解决:设置锁得值要能区分来自不同客户端或不同线程的锁操作 lua脚本释放锁 执行lua脚本 基于多个 Redis 节点实现高可靠的分布式锁 分布式锁算法 Redlock 总结 单机上的锁和分布式锁的联系与区别 单机上得锁: 一个线程调用加锁操作,其实就是检查锁变量值是否为 0。如果是 0,就把锁的变量值设置为 1,表示获取到锁,如果不是 0,