框架源码专题-Redis-2、分布式锁与秒杀优化
1. 超卖问题

2. 分布式锁

2.1. Zookeeper 实现
服务注册与发现-12、Zookeeper3. 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. 不可重入


3.4. 问题总结⭐️🔴


比较容易解决的问题:
- 加锁与设置有效期设为原子操作
- 锁归属判断,防止误删其他线程的锁
- 判断锁归属与 unlock 动作设为原子操作
但是还是有其他问题:
- 不可重入
- 不可重试
- 超时释放,自动续期
- 主从一致性
所以引入 Redisson 或者 ZK 的分布式锁实现方案
4. Redisson
4.1. 使用


4.2. 可重入原理
4.2.1. 不可重入原因

4.2.2. 解决办法

4.3. 看门狗原理

https://www.bilibili.com/video/BV1cr4y1671t?t=1305.7&p=67
4.3.1. 设置定时递归




4.3.2. 取消定时任务


4.4. 总结


5. 秒杀优化

6. 实战经验

7. 参考与感谢
7.1. 黑马
7.1.1. 视频
7.1.2. 资料
1 | |
7.2. 尚硅谷周阳
7.2.1. 视频
https://www.bilibili.com/video/BV13R4y1v7sP?p=138&vd_source=c5b2d0d7bc377c0c35dbc251d95cf204
7.2.2. 资料
1 | |
7.3. 网络笔记
[[用Redis实现分布式锁的血泪史-51CTO.COM]]
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Taylor!
评论



