潋湄
Java后端
·2024-06-20
redisson分布式锁: 可重入机制:redis采用hash结构存储了键值对应value与count,当同一个客户端向同一个服务器发送请求后,会判断当前是否有该对象,如果没有就创建,如果有就将count值加一,在释放该键时,会将count值-1,直到对应的count值完全为0时才会将该键释放 可重试机制:在调用redis的tryLock方法时,可以向其中传入ttl(重试时间参数),如果不传该参数默认-1,即请求一次,如果获取锁失败就直接返回,这样在获取锁失败后,会再次进行获取锁的操作,但是该操作并不是立即进行,该函数应用了publish-subscriber模式,当前拿到该锁的进程在执行完毕后,会发布一个标志信息到redis中,而其他进程获取锁时,会判断从redis中获取的标志信息,如果为执行完毕才会进行再次申请,这样能够减少对于cpu的占用 超时释放机制:在tryLock时,可以传入期望的释放时间(一般不传),如果不传入,redis中有类似的watchDog(看门狗)机制,它会设置一个初始的释放时间一般为30s,每到1/3个释放时间即10s时,便进行释放时间的更新,以此来保证键值的永远存在,而在释放该锁时,会通知该redis对象从而解除开门狗,从而释放该锁 7主从一致性:在redis中,如果主节点接收到信息向子节点传递信息时,服务器发生了宕机,会导致主从不一致的问题,可以采用锁连环的操作,将多个锁同时加入redis中,并在更新数据的时候同时对他们进行更新
0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
下载 APP