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

Redis 事务详解

日常开发里,经常需要一组命令一起执行,要么全成功、要么全失败。MySQL 有事务,Redis 同样也支持事务,但两者差别很大,千万别混用。

一、Redis 事务是什么

Redis 事务就是把多条命令先缓存、最后一次性批量执行

流程很简单:开启事务 → 命令依次进入队列不执行 → 提交后统一串行执行。

特点:只保证执行过程不被其他命令插队,没有完整原子性,出错不会自动回滚

二、核心常用命令

  • MULTI:开启事务
  • EXEC:提交事务,执行所有缓存命令
  • DISCARD:放弃事务,清空队列
  • WATCH:监听 key,做乐观锁并发控制

简单示例:

plaintext

MULTI set name 小明 set age 22 exec

开启事务后命令会排队,执行 exec 才会真正生效。

三、事务两大错误情况

  1. 语法错误命令写错、参数不对,整个事务直接失效,所有命令都不执行。

  2. 运行逻辑错误语法没问题,但执行时报错,比如字符串做列表操作。这条错误命令失败,其它正常命令照样执行,不会回滚数据。

这也是 Redis 事务最大的坑:不支持回滚

四、WATCH 乐观锁解决并发

单纯事务挡不住并发修改,比如库存、积分场景容易超卖、数据覆盖。

用 WATCH 就能实现乐观锁:

  1. watch 监听指定 key
  2. 查询数据、编写业务命令
  3. 开启事务修改数据
  4. 提交时如果监听的 key 被别人改过,事务直接作废

适合秒杀、库存扣减、余额变更这类竞争场景。

五、Redis 事务缺点

  1. 不支持回滚,无法保证严格原子性
  2. 不能事务嵌套
  3. 大批量命令执行会阻塞主线程
  4. 只适用于简单批量操作

实际使用建议

  1. 简单批量操作、不需要强一致:直接用原生事务
  2. 并发争抢数据:搭配 watch 乐观锁使用
  3. 需要强原子、多条命令强隔离:优先使用 Lua 脚本,比事务更稳更好用
http://www.cnnetsun.cn/news/2165962.html

相关文章:

  • 手把手教你用Windows电脑+可道云搭建私人网盘,没有公网IPv4也能远程访问
  • AutoSar OS实战笔记:Basic Task和Extended Task怎么用?在EB Tresos里配置抢占式任务避坑指南
  • 好用的企业邮箱有哪些?2026主流企业邮箱如何选?
  • 为什么92%的PHP团队在AI集成中踩坑?PHP 9.0新Task Scheduler与LLM Token流协同机制大揭秘
  • 收藏必看|2026版Java程序员别再死磕微服务高并发!不懂大模型直接被淘汰
  • 2026精选10款项目管理软件|全场景实用推荐
  • “3分钟接入,5秒生成周报”——Tidyverse 2.0 + GitHub Actions CI/CD自动化闭环(真实金融客户压测数据:QPS 42.6)
  • 从MSG_PEEK到错误处理:深入挖掘Linux网络编程中recvfrom/sendto的那些高级用法和坑
  • SpringBoot运行后,一会儿停止的问题
  • 别再只用RAID0/1/5了!用mdadm在Ubuntu 22.04上实战搭建RAID10,兼顾速度与安全
  • 项目开发Backlog(待办事项列表)介绍(Sprint Backlog迭代待办列表、MoSCoW法则)Jira、Trello、Notion、GitHub Projects、敏捷开发
  • Linux RT 调度器的 rt_runtime:RT 任务配额管理
  • 如何通过Obsidian Style Settings插件打造个性化笔记体验:终极视觉定制指南
  • 通过taotoken cli在ubuntu上一键配置开发环境与api密钥
  • 在OpenClaw Agent工作流中无缝接入Taotoken聚合模型
  • 神经接口测试标准:软件测试从业者的专业指南
  • 怎样高效使用Adobe-GenP:完整Adobe激活工具实用指南
  • 通过curl命令快速测试Taotoken API连通性与模型响应
  • 如何用AutoDock-Vina进行分子对接:新手完整指南
  • 基于强化学习的量化交易框架TradzQAI:从回测到实盘的实战指南
  • 在aarch64机器上安装使用R语言的季节调整包
  • 太强了!这个开源项目让我告别 PowerPoint,36 套主题一键切换,还自带演讲者模式!
  • iTVBoxFast会员版运营指南:从搭建到对接支付、管理卡密和防抓包实战
  • 网盘直链下载助手完整指南:2025年八大网盘高速下载终极解决方案
  • 在多地域部署服务中体验Taotoken的低延迟与路由容灾能力
  • 【2026实测】应对Turnitin更新:英文文本AI率从80%降至10%通关指南
  • 群晖NAS安全升级:告别手动更新,用acme.sh+Docker实现SSL证书全自动续期与部署
  • 互联网大厂 Java 求职面试:从音视频场景看技术栈的深度
  • NumPy数组初始化避坑指南:np.zeros、np.zeros_like和np.full到底该怎么选?
  • 从直连不稳定到通过Taotoken调用体验到的服务可靠性提升