redis分布式锁(入门)
文章目录
前言
一、面试题
redis的用法:
CAP
C 一致性,单体redis
AP 高可用 集群redis
二、锁的种类
三、一个靠谱分布式锁需要具备的条件和刚需
四、分布式锁
五、重点
六、Base案例(boot+redis)
1.0、最基础的锁demo 单机锁
2.0、Nginx分布式微服务架构下的单机锁
为什么在高并发下,不能用lock unlock这样的JVM层面上的单机锁
如何解决?上redis分布式锁setnx
3.0、redis分布式锁
递归重试抢锁
问题 递归容易导致堆栈溢出,以及if判断
修改3.2 自旋代替递归、while代替if
3.2的问题 没有给分布式锁加过期时间,一旦由于宕机等原因无法执行删除锁,就会阻塞其他正常使用这把锁的业务
4.0版本
4.2改进版 合为一行保证原子性 但是过期时间不够怎么办?
5.0版 在finally的删除时,只能删除自己的
到5.0为止的加锁的状态
问题:最后的判断+del不是一行原子命令操作,需要lua脚本进行修改
lua脚本浅谈
hello lua:
三条命令一起执行:
通过占位符方式,输入参数执行:
官网建议的lua脚本原子删除
实操:
语法:
案例:
6.0 加入lua脚本
到6.0为止的脑图
6.0只能也对小厂的分布式锁,而到了大数据量的高并发则需要7.0 8.0的技能,放到下一篇写
七、手写分布式锁思路分析2023
放到下一篇写