当前位置: 首页 > news >正文

Redisson分布式锁原理

请添加图片描述

  1. 加锁流程
    调用lock(),底层执行的是一段lua脚本,相当于setnx但是使用hash结构存储数据和线程信息。
    如果 key 不存在(无锁),则加锁成功。否则失败。
    如果是同一线程重复加锁,Redisson 使用hash结构记录每个线程(uuid+线程线程id)加锁次数,实现可重入锁。

  2. 看门狗机制(Watchdog)
    默认锁过期时间是 30 秒(如未指定),如果业务还未完成,Redisson 内部有个后台线程定期(锁过期 / 3)刷新 TTL,只有加锁线程还持有锁,续期才会生效。

  3. 解锁流程
    调用 unlock() 方法时,Redisson 会执行 也会Lua 脚本
    多线程加锁场景中,Redisson 用 Hash 保存线程与重入次数。解锁时,只有持有锁的线程才能真正删除

锁被持有期间有其他线程来获取锁
lua返回锁的ttl,想获取锁的线程会先尝试一次(非公平锁),然后在while循环中阻塞ttl秒的时间,继续获取锁。如果持有锁的线程提前完成了会通过发布订阅去唤醒其他等待锁的线程。

相关文章:

  • 七、【前端路由篇】掌控全局:Vue Router 实现页面导航、动态路由与权限控制
  • 系统开发和运行知识
  • 图解RNN基本结构:从经典模型到注意机制全解析
  • (自用)Java学习-5.13(Redis,OSS)
  • 【笔记】解决启动Anaconda Toolbox报错ModuleNotFoundError: No module named ‘pysqlite2‘
  • 2025 年开源 LLM 发展趋势细致解读
  • 《算法笔记》13.2小节——专题扩展->树状数组(BIT) 问题 C: Count Inversions
  • uv ——新的python包管理工具
  • uv使用教程
  • 组态王KingSCADA3.53连接S7-1200PLC实战教程
  • NSSCTF-[安洵杯 2018]boooooom
  • 水墨色调中国风PPT模版分享
  • 大数据学习(122)-分区与分桶表
  • Python - 文件部分
  • FFmpeg 时间戳回绕处理:保障流媒体时间连续性的核心机制
  • rStar-Math:蒙特卡洛搜索增强 LLM 逻辑推理能力
  • 第5章 软件工程基础知识
  • 测评机构如何通过漏扫保障软件安全?扫描范围与局限解析
  • Spring AI 之多模态
  • spring实战第四版01
  • 深圳模板建站企业/悟空建站seo服务
  • 蚌埠网站制作哪家好/东莞seo建站哪家好
  • 做网站现在赚钱吗/seo美式
  • 如何做网站关键词/百度推广需要多少钱
  • 网站建设移动端官网/信息发布平台推广有哪些
  • 可以免费做演播的听书网站/cba最新排名