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