1. 超卖问题

2. 分布式锁

2.1. Zookeeper 实现

服务注册与发现-12、Zookeeper

3. Redis 分布式锁 -set nx ex- 存在问题⭐️🔴

3.1. 删除其他线程的锁

3.1.1. 发生原因

3.1.2. 解决方案

3.2. 优化线程 ID

3.3. 系统阻塞导致删锁

3.3.1. 发生原因

3.3.2. 解决方案

保证判断和释放动作的原子性

3.3.3. 不可重入

image.png

image.png

3.4. 问题总结⭐️🔴

image.png

比较容易解决的问题:

  1. 加锁与设置有效期设为原子操作
  2. 锁归属判断,防止误删其他线程的锁
  3. 判断锁归属与 unlock 动作设为原子操作

但是还是有其他问题:

  1. 不可重入
  2. 不可重试
  3. 超时释放,自动续期
  4. 主从一致性

所以引入 Redisson 或者 ZK 的分布式锁实现方案

4. Redisson

4.1. 使用


4.2. 可重入原理

4.2.1. 不可重入原因

4.2.2. 解决办法

4.3. 看门狗原理

https://www.bilibili.com/video/BV1cr4y1671t/?p=67&spm_id_from=pageDriver&vd_source=c5b2d0d7bc377c0c35dbc251d95cf204

https://www.bilibili.com/video/BV1cr4y1671t?t=1305.7&p=67

4.3.1. 设置定时递归

image.png

image.png
image.png

image.png

4.3.2. 取消定时任务

image.png
image.png

4.4. 总结

5. 秒杀优化

6. 实战经验

image.png

7. 参考与感谢

7.1. 黑马

7.1.1. 视频

https://www.bilibili.com/video/BV1cr4y1671t?p=51&spm_id_from=pageDriver&vd_source=c5b2d0d7bc377c0c35dbc251d95cf204

7.1.2. 资料

1
/Users/taylor/Nutstore Files/Obsidian_data/pages/002-schdule/001-Arch/001-Subject/002-框架源码专题/002-DB/001-Redis/Redis-笔记资料

7.2. 尚硅谷周阳

7.2.1. 视频

https://www.bilibili.com/video/BV13R4y1v7sP?p=138&vd_source=c5b2d0d7bc377c0c35dbc251d95cf204

7.2.2. 资料

1
/Users/taylor/Nutstore Files/Obsidian_data/pages/002-schdule/001-Arch/001-Subject/002-框架源码专题/002-DB/001-Redis/尚硅谷Redis7

7.3. 网络笔记

[[用Redis实现分布式锁的血泪史-51CTO.COM]]