redis分布式锁
2023-07-03 12:10:44 5 举报
AI智能生成
redis分布式锁实现原理
作者其他创作
大纲/内容
注册redis客户端,注入容器
getLock()获取锁对象
lock()加锁
核心方法tryLockInnerAsync()
evalWriteAsync()
hset设置key,value为clientId
pexpire设置key超时时间默认30s
锁重入
加锁失败返回锁的超时时间
operstionComplete回调判断是否加锁成功
加锁成功scheduleExpirationRenewal(),超时时间刷新,锁续命
加锁失败
循环间歇性加锁
获取锁的ttl时间
ttl时间大于0,阻塞ttl时间再循环
获取锁
订阅锁的消息
lua脚本
减少网络开销
原子操作
替代redis 的事务功能
如上所示
Arrays.asList("product_stock_10016"):表示key[n]的集合,n表示集合的第几个元素
Arrays.asList("10"):表示ARGV[n]的集合
非公平锁
unlock()解锁
锁不存在发布解锁消息
根据线程id判断是否为自己加的锁,不是返回null
对加锁的key-1
判断key 的count是否大于0
小于等于0,释放锁
0 条评论
下一页