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

Redis:事务

基本命令

  • MULTI:开启事务,之后的命令会放入队列,直到 EXECDISCARD 被调用。
  • EXEC:执行事务中的所有命令。
  • DISCARD:取消事务,清空命令队列。
  • WATCH:监视一个或多个键,如果在事务执行前这些键被修改,事务将不会执行。

事务执行流程

  1. 开启事务:使用 MULTI 命令开启一个事务。在这个阶段,Redis 会标记当前客户端进入事务状态,并准备接收后续的命令。
  2. 命令入队:在事务开启后,客户端发送的所有命令都会被放入事务队列中,而不会立即执行。每个命令入队后,Redis 会返回 QUEUED 表示命令已成功入队
  3. 执行事务:使用 EXEC 命令执行事务队列中的所有命令。Redis 会按照命令入队的顺序依次执行这些命令,并将每个命令的执行结果返回给客户端。
  4. 取消事务:使用 DISCARD 命令取消当前事务,并清空事务队列。在取消事务后,客户端可以重新开始一个新的事务。
> MULTI
OK
> SET key1 value1
QUEUED
> SET key2 value2
QUEUED
> EXEC
1) OK
2) OK

WATCH命令

WATCH 用于实现乐观锁,监视一个或多个键,如果在事务执行前这些键被修改,事务将不会执行。

> WATCH key1
OK
> MULTI
OK
> SET key1 newvalue
QUEUED
> EXEC
(nil)
  • 如果在 MULTI 之后、EXEC 之前 key1 被修改,事务将执行失败,返回 (nil)
  • 可以通过 UNWATCH 取消监控。

特性

  • 原子性(Atomicity):Redis 事务可以保证一个事务中的所有命令要么都执行,要么都不执行。但是如果在事务执行过程中发生了运行时错误,Redis 不会回滚事务,而是继续执行后续命令,这与传统数据库的严格原子性有所不同。
  • 一致性(Consistency):Redis 事务可以保证数据的一致性,前提是事务中的命令没有逻辑错误。
  • 隔离性(Isolation):Redis 的事务是单线程执行的,这意味着在一个事务执行期间,不会有其他事务同时执行,从而避免了并发访问导致的数据不一致问题。
  • 持久性(Durability):Redis 事务本身并不直接保证持久性。持久性取决于 Redis 所采用的持久化策略,如 RDB(快照)和 AOF(追加日志)。

应用场景

库存管理:在电商系统中,库存管理是一个重要的问题。使用 Redis 事务可以保证库存扣减操作的原子性,避免超卖问题。

用户积分系统:在用户积分系统中,使用 Redis 事务可以保证积分的增加和减少操作的原子性。

相关文章:

  • 2025前端八股文终极指南:从高频考点到降维打击的面试突围战
  • Nginx — Nginx版本升级
  • 美甲预约管理系统基于Spring Boot SSM
  • 如何高效解决 Java 内存泄漏问题方法论
  • (学习总结31)Linux 进程地址空间与进程控制
  • 电子电气架构 --- EEA演进与芯片架构转移
  • vue前端代码作业——待办事项
  • [CSAPP] 9.8 内存映射 | 虚拟内存 | 页表 | 物理内存 | 写时拷贝机制
  • 使用 Frida Stalker 反 OLLVM 算法还原
  • 代码随想录算法训练营第三十二天 | 509.斐波那契数 70.爬楼梯 746.使用最小花费爬楼梯
  • 基于YOLO11的违禁物品检测分析系统
  • 【sgThumbPreviewTip】自定义组件:缩略图预览组件,移入缩略图等待1秒后出现浮动气泡框显示更大的缩略图或预览播放视频
  • HTTP协议手写服务器
  • 设计模式之适配器模式(二):STL适配器
  • RISC-V AIA学习3---APLIC 第二部分(APLIC 中断域的内存映射控制区域)
  • 第五章.图论
  • iOS GCD
  • C++ STL常用算法之常用排序算法
  • Vue3+Vite获取原始文版并展示在页面内
  • 030-gprof
  • 商城定制开发/网站页面关键词优化
  • 专做会议发布的网站/百度网盘客服在线咨询
  • 网络app开发网站建设价格/广州百度推广优化排名
  • 队徽logo设计/长春网站优化页面
  • 网站建设项目文档/网络营销活动策划
  • 南昌网站优化公司/zac博客seo