Redisson分布式锁原理

Redisson是基于Redis实现的客户端库,提供了多种Java并发API映射到Redis中,也实现了各种分布式服务,其中就有各种分布式锁的实现。

Redisson锁弥补了SETNX锁的的局限性,实现了可重入、可重试和超时续约的功能。

  • 可重入:利用redis的 hash 结构记录线程 id 和重入次数。每次获取锁时,先判断锁是否存在,如果不存在,则直接获取,如果已经存在,且线程标识为当前线程,则可以再次获取,并将重入次数加 1。释放锁时,每释放一次,重入次数减 1,直至重入次数减为 0,则证明所有的业务已经执行结束,则可以直接释放锁。整个过程是采用lua脚本实现的。

  • 可重试:利用信号量和 PubSub 功能实现等待、唤醒,获取锁失败的重试机制。在第一次尝试获取锁失败后,并不是立即失败,而是去等待释放锁的信号(利用了 Redis 中 PubSub 机制)。而获取锁成功的线程在释放锁的时候,就会向等待中的线程发送一条消息,等待中的线程捕获到消息后,就可以重新尝试获取锁。如果重试失败,则会继续等待释放锁的信号,然后再去重试。当然,重试并不是无限次的,会有一个等待时间,如果超过等待时间,就结束重试。

  • 超时续约:利用 watchDog,每隔一段时间(releaseTime/3),重置超时时间。简单来说,就是在获取锁成功后,会开启一个定时任务,该定时任务每隔一段时间就会重置锁的超时时间,这样锁的超时时间就会重新计时。

参考1
参考2

相关推荐
珠海西格电力1 分钟前
零碳园区管理系统“云-边-端”架构协同的核心价值
大数据·人工智能·分布式·微服务·架构·能源
GIS数据转换器17 分钟前
延凡分布式光伏集中监控平台
人工智能·分布式·数据挖掘·数据分析·无人机·智慧城市
早睡早起早日毕业19 分钟前
大数据管理与应用系列丛书《大数据平台架构》之第2章 分布式理论基础:大数据系统的架构基石
大数据·hadoop·分布式·架构
卷毛的技术笔记33 分钟前
告别“盲猜式”排障:分布式链路追踪方案选型与Spring Boot 3实战
java·spring boot·分布式·后端·spring·面试·系统架构
y = xⁿ37 分钟前
Redis:分布式锁,Redisson以及看门狗机制解析
数据库·redis·分布式
无忧智库1 小时前
计量先行:虚拟电厂分布式资源接入的底层逻辑与工程实践深度解析(PPT)
分布式
m0_640309301 小时前
HarmonyOS 5.0 IoT开发实战:构建分布式智能设备控制中枢与边缘计算网关
分布式·物联网·harmonyos
aLTttY10 小时前
【Redis实战】分布式锁的N种实现方案对比与避坑指南
数据库·redis·分布式
小江的记录本20 小时前
【微服务与云原生架构】DevOps、CI/CD流水线、GitOps 系统性知识体系
分布式·后端·ci/cd·微服务·云原生·架构·devops
2603_9547083121 小时前
微电网混合控制架构:主从与对等控制的优势融合
分布式·安全·架构·能源·需求分析