524 Star 4K Fork 1.7K

shishan100 / Java-Interview-Advanced

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
redis-distribute-lock.md 1.48 KB
一键复制 编辑 原始数据 按行查看 历史
jorden.li 提交于 2020-04-25 19:55 . first commit

面试突击第二季 distributed-lock Redis分布式锁,很少自己撸,Redisson框架,他基于Redis实现了一系列的开箱即用的高级功能,比如说分布式锁

引入maven依赖,他示例代码就几行

比如说,苹果这个商品的id是1

redisson.lock(“product_1_stock”)

key的业务语义,就是针对product_id = 1的商品的库存,也就就是苹果的库存,进行加锁

如果要学习redis技术的,跟我之前录制的《亿级流量商品详情页系统》去学习,在训练营的课程目录里有一个文档,有我之前的课程的地址

product_1_stock: { “xxxx”: 1 }

生存时间:30s

watchdog,redisson框架后台执行一段逻辑,每隔10s去检查一下这个锁是否还被当前客户端持有,如果是的话,重新刷新一下key的生存时间为30s

其他客户端尝试加锁,这个时候发现“product_1_stock”这个key已经存在了,里面显示被别的客户端加锁了,此时他就会陷入一个无限循环,阻塞住自己,不能干任何事情,必须在这里等待

第一个客户端加锁成功了,此时有两种情况,第一种情况,这个客户端操作完毕之后,主动释放锁;第二种情况,如果这个客户端宕机了,那么这个客户端的redisson框架之前启动的后台watchdog线程,就没了

此时最多30s,key-value就消失了,自动释放了宕机客户端之前持有的锁

Java
1
https://gitee.com/shishan100/Java-Interview-Advanced.git
git@gitee.com:shishan100/Java-Interview-Advanced.git
shishan100
Java-Interview-Advanced
Java-Interview-Advanced
master

搜索帮助