讲师中心 微信公众号
AI工具推荐 视频效率加速

Redis分布式锁怎么实现 Redis Redisson锁原理【教程】

夏敏同学_1802

夏敏同学_1802

发布时间:2026-02-13 05:45:15

|

871人浏览过

|

来源于php中文网

原创

Redis分布式锁本质是用全局唯一key作占位符,通过SET命令的NX/PX选项实现互斥与防死锁,释放锁须用Lua脚本原子校验clientID;Redisson通过自动续期、可重入、阻塞等待等机制简化生产级使用。

redis分布式锁怎么实现 redis redisson锁原理【教程】

Redis分布式锁本质是用一个全局唯一的key做“占位符”,谁设成功了,谁就拿到锁;关键是要设得安全、删得靠谱、扛得住宕机和网络波动。

基础实现:SET命令一步到位

最核心的命令就是:

  • SET lock:order_123 clientA NX PX 30000 —— “只有key不存在时才设置,且30秒后自动过期”
  • NX保证互斥(同一时间只有一个客户端能成功)
  • PX防止死锁(服务崩溃也不怕锁永远卡住)
  • clientA是唯一标识,后续释放锁时用来校验身份,避免误删

释放锁必须用Lua脚本

不能直接DEL,否则可能删掉别人正在用的锁。正确做法是用一段Lua脚本原子执行“先检查再删除”:

Redis Skill - 高性能缓存管理
Redis Skill - 高性能缓存管理

Redis 缓存和数据结构管理技能。通过自然语言操作 Redis,支持 String、Hash、List、Set、ZSet、Stream 等数据结构操作。当用户提到 Redis、缓存、消息队列、会话存储时使用此技能。

下载
  • 脚本内容:if redis.call("GET", KEYS[1]) == ARGV[1] then return redis.call("DEL", KEYS[1]) else return 0 end
  • KEYS[1]是锁key,ARGV[1]是当前客户端的唯一标识(比如UUID)
  • Redis单线程执行Lua,整个判断+删除过程不可打断,彻底杜绝竞态

Redisson是怎么简化这件事的

Redisson不是简单封装,而是补全了生产环境真正需要的能力:

  • 自动续期(Watch Dog):加锁后默认每10秒检查一次,只要业务还在跑,就自动把锁有效期延长到30秒,不怕超时误释放
  • 可重入:同一个线程再次加锁,会记录重入次数,解锁也按次数匹配,不会提前释放
  • 阻塞等待:支持tryLock(5, TimeUnit.SECONDS),等5秒拿不到就放弃,不空转耗资源
  • 异常自动清理:连接断开或节点故障时,Redisson能感知并尝试安全释放锁

几个容易踩的坑

不用Redisson自己写,这些点基本绕不开:

  • SETNX + EXPIRE分开调用 → 崩溃在中间会导致无过期时间的死锁
  • 用固定值当锁value(比如"1")→ 所有客户端都能删,完全失去安全性
  • 没做锁续期 → 耗时操作超过过期时间,锁被自动释放,其他线程趁虚而入
  • 主从架构下没考虑复制延迟 → 主库设了锁,从库还没同步就被读取,导致多个客户端同时认为自己拿到了锁(RedLock就是为解决这个设计的,但多数场景用单Redis+Redisson已足够)

基本上就这些。用好Redisson,95%的分布式锁需求都稳了;自己手写,重点盯住原子性、身份校验、自动续期这三点。

热门AI工具

更多
DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

相关专题

更多
什么是分布式
什么是分布式

分布式是一种计算和数据处理的方式,将计算任务或数据分散到多个计算机或节点中进行处理。本专题为大家提供分布式相关的文章、下载、课程内容,供大家免费下载体验。

1913

2023.08.11

分布式和微服务的区别
分布式和微服务的区别

分布式和微服务的区别在定义和概念、设计思想、粒度和复杂性、服务边界和自治性、技术栈和部署方式等。本专题为大家提供分布式和微服务相关的文章、下载、课程内容,供大家免费下载体验。

2634

2023.10.07

线程和进程的区别
线程和进程的区别

线程和进程的区别:线程是进程的一部分,用于实现并发和并行操作,而线程共享进程的资源,通信更方便快捷,切换开销较小。本专题为大家提供线程和进程区别相关的各种文章、以及下载和课程。

3618

2023.08.10

常用的数据库软件
常用的数据库软件

常用的数据库软件有MySQL、Oracle、SQL Server、PostgreSQL、MongoDB、Redis、Cassandra、Hadoop、Spark和Amazon DynamoDB。更多关于数据库软件的内容详情请看本专题下面的文章。php中文网欢迎大家前来学习。

4189

2023.11.02

内存数据库有哪些
内存数据库有哪些

内存数据库有Redis、Memcached、Apache Ignite、VoltDB、TimesTen、H2 Database、Aerospike、Oracle TimesTen In-Memory Database、SAP HANA和ache Cassandra。更多关于内存数据库相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

3675

2023.11.14

mongodb和redis哪个读取速度快
mongodb和redis哪个读取速度快

redis 的读取速度比 mongodb 更快。原因包括:1. redis 使用简单的键值存储,而 mongodb 存储 json 格式的数据,需要解析和反序列化。2. redis 使用哈希表快速查找数据,而 mongodb 使用 b-tree 索引。因此,redis 在需要高性能读取操作的应用程序中是一个更好的选择。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

6552

2024.04.02

redis怎么做缓存服务器
redis怎么做缓存服务器

redis 作为缓存服务器的答案:redis 是一款开源、高性能、分布式的键值存储,可作为缓存服务器使用。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

623

2024.04.07

redis怎么解决数据一致性
redis怎么解决数据一致性

redis 提供了两种一致性模型,以维护副本数据一致性:强一致性 (sync) 确保写操作仅在复制到所有从节点后才完成;最终一致性 (async) 则在主节点上写操作后认为已完成,牺牲一致性换取性能。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

716

2024.04.07

PixTV AI视频生成与无限画布创作
PixTV AI视频生成与无限画布创作

PixTV专题整理AI视频与视觉内容创作相关功能使用教程,涵盖AI生图、视频生成、无限画布、多模型创作、素材管理、声音音乐及视频剪辑等功能,帮助用户快速掌握PixTV从创意到成片的完整制作方法。

0

2026.09.29

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpEnv手册
phpEnv手册

共0课时 | 0人学习

进程与SOCKET
进程与SOCKET

共6课时 | 0.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn