加锁逻辑:这里我把加锁逻辑分解成三步展示给大家
- 加锁前:先判断当前线程是否存在请求ID,不存在则生成,存在就直接使用
- 加锁中:通过 lua 脚本执行原子加锁操作 , 加锁时先判断当前线程ID与加锁 key 得 value 是否相等,相等则是同一个线程的锁重入,直接返加锁成功 。不相等则设置加锁 value 为请求ID以及过期时间 。
- 加锁后:启动一个定时任务,每隔
过期时间 / 3秒后执行一次续期操作,发现锁剩余时间不足过期时间 / 2秒后 , 通过 lua 脚本进行续期操作 。
- 解锁中:通过 lua 脚本执行解锁操作,先判断加锁 key 的 value 是否与自身请求ID相同 , 相同则让解锁,不相同则不让解锁 。
- 解锁后:删除定时任务 。
【Redis分布式锁常见坑点分析】
推荐阅读
- Redis 也支持全文搜索?这也太强了
- 聊聊分布式数据库TDSQL的技术架构
- pr怎么锁定图层,ps要怎么才可以锁定图层
- 华为手机触屏解锁怎么设置,华为解锁直接进入桌面怎么设置
- 刘德华11岁女儿时隔5年露面!眉头深锁送别爷爷,长得与妈妈极像
- 解锁 C++ 并发编程的钥匙:探索 Atomic 变量
- MySQL:逃不掉的锁事,间隙锁
- 宋祖英终于换对新发型,56岁嫩回36岁,锁骨短发配粉衣少女感十足
- 栖桐国际:面霜可以锁住皮肤表面,形成一个保护层,防止水分流失
- TVB女星自曝被赶出家门!密码锁被改衣服被扔掉,新婚4个月
