news 2026/6/3 20:20:18

【Redis】 分布式锁核心原理与面试重点(Redisson看门狗+可重入+主从问题)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Redis】 分布式锁核心原理与面试重点(Redisson看门狗+可重入+主从问题)

大家好,我是程序员二叉。


简介

分布式锁是分布式系统中保证并发安全的核心技术,Redis 分布式锁凭借高性能、易实现成为主流方案。本文详细讲解基础 SET NX EX 实现、锁超时释放与自动续约、Redisson 看门狗机制、主从架构锁失效问题、可重入锁原理,覆盖面试高频考点与生产落地方案。欢迎点赞收藏关注。


一、Redis 分布式锁基础实现原理(SET NX EX)

1. 核心命令

SET lock_key 唯一标识 NX EX 30
  • NX:仅key不存在时才加锁成功,保证互斥性
  • EX:设置过期时间,避免服务宕机导致死锁
  • 唯一标识:防止锁被其他线程误删

2. 执行流程

多个线程同时执行加锁命令,只有一个线程成功
加锁成功执行业务逻辑
释放锁必须通过Lua 脚本判断唯一标识,再删除 key,保证原子性

3. 核心作用

实现多节点之间的互斥访问,防止并发问题。


二、分布式锁超时释放问题

1. 问题描述

锁设置了固定过期时间,例如 30 秒,但业务执行时间超过 30 秒,锁自动过期被释放,其他线程可以抢占锁,导致并发安全问题。

2. 根本原因

锁过期时间 < 业务执行时间。

3. 解决方案

锁自动续约(续命):在锁即将过期时,如果业务未执行完,自动延长锁时间。


三、锁续约实现 & Redisson 看门狗原理

1. 手动续约缺点

代码侵入性强、定时任务难维护、可靠性低。

2. Redisson 看门狗(WatchDog)自动续约原理

  1. 加锁默认超时时间30s
  2. 启动后台定时线程(看门狗)
  3. 每 10s检查一次:若线程仍持有锁,将锁超时时间重置为 30s
  4. 业务执行完毕释放锁,看门狗停止
  5. 服务宕机,看门狗消失,锁自动过期,无死锁风险

3. 优点

自动化、无侵入、高可靠,是生产环境标准方案。


四、主从架构下分布式锁失效问题

1. 失效场景

  1. 主线程加锁成功
  2. 主节点未同步锁到从节点就宕机
    3.哨兵选举新主节点
    4.其他线程在新主节点加锁成功
    → 出现两把锁,并发安全失效

2. 根本原因

主从异步复制,存在数据同步延迟间隙。

3. 解决方案

  • RedLock 红锁:复杂、性能差、官方不推荐
  • 业务兼容最终一致性:通用折中方案
  • Zookeeper 分布式锁:强一致性,无主从失效问题

五、Redisson 可重入锁原理

1. 可重入锁定义

同一个线程可多次获取同一把锁,不会自己锁死自己。

2. 实现原理

  • 数据结构:Redis Hash
    • key:锁名
    • field:线程唯一标识
    • value:重入次数
  • 加锁:
    • 首次加锁:hset+ 启动看门狗
    • 同一线程再次加锁:计数 +1
  • 解锁:
    • 计数 -1
    • 计数为 0:删除key,关闭看门狗

3. 保证原子性

全部操作通过Lua 脚本执行,确保原子性。


六、总结

  1. 基础分布式锁SET NX EX+唯一值+Lua 解锁,实现互斥与防误删。
  2. 锁超时问题:业务执行时间过长导致锁提前释放,必须使用自动续约。
  3. 看门狗:定时自动延长锁有效期,解决锁超时释放问题。
  4. 主从锁失效:主从异步复制导致锁丢失,无法完美规避,可通过业务或组件兼容。
  5. 可重入锁:Hash 结构 + 重入计数 + Lua 脚本实现同一线程重复加锁。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/3 20:17:48

宇视VMS-U易用性推宣—收藏夹功能优化

宇视VMS-U易用性推宣—收藏夹功能优化一&#xff0e;背景介绍VMS-U平台收藏夹功能在1.3.9.P05前仅可在收藏夹菜单进行收藏夹新建&#xff0c;资源树的收藏夹不满足需要时&#xff0c;需要返回收藏夹界面新建收藏夹&#xff0c;较为繁琐。故1.3.9.P05版本对VMS-U平台收藏夹功能进…

作者头像 李华
网站建设 2026/6/3 20:15:58

小爱音箱音乐播放器终极指南:免费解锁语音控制音乐库

小爱音箱音乐播放器终极指南&#xff1a;免费解锁语音控制音乐库 【免费下载链接】xiaomusic 使用小爱音箱播放音乐&#xff0c;音乐使用 yt-dlp 下载。 项目地址: https://gitcode.com/GitHub_Trending/xia/xiaomusic 还在为小爱音箱的音乐资源有限而烦恼吗&#xff1f…

作者头像 李华
网站建设 2026/6/3 20:12:30

Mermaid Live Editor终极指南:零安装的实时图表代码化神器

Mermaid Live Editor终极指南&#xff1a;零安装的实时图表代码化神器 【免费下载链接】mermaid-live-editor Edit, preview and share mermaid charts/diagrams. New implementation of the live editor. 项目地址: https://gitcode.com/GitHub_Trending/me/mermaid-live-ed…

作者头像 李华
网站建设 2026/6/3 20:09:59

KDiff3终极指南:免费开源的文件比较与合并工具完全手册

KDiff3终极指南&#xff1a;免费开源的文件比较与合并工具完全手册 【免费下载链接】kdiff3 Utility for comparing and merging files and directories 项目地址: https://gitcode.com/gh_mirrors/kd/kdiff3 还在为代码冲突而烦恼吗&#xff1f;KDiff3是一款功能强大的…

作者头像 李华
网站建设 2026/6/3 20:07:25

Ltx2.3-VBVR-lora-I2V常见问题解答:从安装到使用的完整排错指南

Ltx2.3-VBVR-lora-I2V常见问题解答&#xff1a;从安装到使用的完整排错指南 【免费下载链接】Ltx2.3-VBVR-lora-I2V 项目地址: https://ai.gitcode.com/hf_mirrors/LiconStudio/Ltx2.3-VBVR-lora-I2V Ltx2.3-VBVR-lora-I2V是基于LTX-2.3模型进行LoRA微调的视频推理模型…

作者头像 李华