Redis 事务的介绍

devtools/2025/2/10 23:54:41/

1. Redis 事务介绍

Redis 的事务和 MySQL 的事务概念上是类似的,不过也有一定区别:

  • 弱化的原子性:Redis 没有 “回滚机制”,只能批量执行操作,但如果其中一个操作失败,不会恢复到初始状态。
  • 不保证一致性:不涉及 “约束” 也无回滚机制。与 MySQL 事务运行前后结果都合理有效、不会出现中间非法状态不同,Redis 在这方面没有类似严格保证。
  • 不需要隔离性:由于 Redis 单线程处理请求,不会并发执行事务,所以不存在隔离级别相关问题。
  • 不需要持久性:数据保存在内存中,是否开启持久化由 redis - server 自身决定,和事务无关。

Redis 事务通过 MULTI 命令开启,此后客户端发送的命令不会立即执行,而是被存入一个事务队列中。当客户端发送 EXEC 命令后,服务器才会顺序执行事务队列中的所有命令。在此期间,由于 Redis 是单线程处理请求,所以这些操作是连续执行的,不会被其他客户端的请求 “加塞”,保证了事务队列内操作执行的连贯性

2. 相关命令

MULTI:开启事务,标志着后续命令进入事务队列,暂不执行,返回OK

EXEC:执行事务队列中的所有命令,在 MULTI 之后、EXEC 之前入队的命令会顺序执行

DISCARD:取消事务,清除事务队列中的所有命令,客户端回到非事务状态,返回OK

执行 EXEC 之后事务中的命令才会被执行

WATCH:用于在事务开始前监控一个或多个键。若在 EXEC 执行前,被监控的键至少有一个被修改,事务将被取消

UNWATCH:取消所有被 WATCH 监控的键,一般在 EXEC 执行后或事务取消后使用,避免不必要的监控资源占用。

WATCH 的实现原理:Redis 为每个数据维护了一个watched_keys字典,字典的是被监视的键,是一个链表,链表中记录了所有监视这个键的客户端,当某个客户端使用 WATCH 命令监视某个键的时候,如果键发生修改,对应的表示位也会被修改,当客户端执行 EXEC 命令时,Redis 会检查客户端的 REDIS_DIRTY_CAS 标志位,如果标志位为 1,说明被监视的键在事务开启后被修改过,Redis 会取消该事务,不执行事务队列中的任何命令,并返回 (nil) 给客户端


http://www.ppmy.cn/devtools/157765.html

相关文章

构建高效Facebook广告矩阵:精准营销与广告投放的全新策略

随着社交媒体广告成为企业营销不可或缺的一部分,Facebook作为全球最大的社交平台之一,已成为企业营销的重要阵地。在Facebook上成功的广告投放,往往不只是依赖于单一广告,而是通过构建一个精准的广告矩阵来提升品牌曝光、增强用户…

Rust 核心语法总结

一、Rust 核心语法总结 1. 基础语法 变量绑定 let x = 5; // 不可变绑定 let mut y = 10; // 可变绑定数据类型 标量类型:i32, u32, f64, bool, char复合类型:元组 (i32, f64)、数组 [i32; 5]字符串:String(堆分配)、&str(切片)所有权系统 所有权规则…

基于RK3588/RK3576+FPGA的巡检机器人六自由度机械臂的系统设计

当今巡检机器人机械臂在管廊隧道等复杂环境的作业过程中,经常面临空间狭窄 且障碍物密集的问题,这就要求机械臂具备在狭窄空间进行避障路径规划的能力。此 外,一些不确定性因素如在突发或异常环境条件下,机械臂的全局状态信息感知…

4.2 检查k8s集群准入配置和其他准备工作

本节重点总结 : k8s集群检查操作新建项目 kube-mutating-webhook-inject-pod,准备工作 k8s集群检查操作 检查k8s集群否启用了准入注册 API: 执行kubectl api-versions |grep admission如果有下面的结果说明已启用 kubectl api-versions |grep admiss…

基于SpringBoot的校园社交平台

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…

芯科科技的BG22L和BG24L带来应用优化的超低功耗蓝牙®连接

全新的BG22L为常见蓝牙设备提供强大的安全性和处理能力,而BG24L支持先进的AI/ML加速和信道探测功能 2025年2月6日 – 致力于以安全、智能无线连接技术,建立更互联世界的全球领导厂商Silicon Labs(亦称“芯科科技”,NASDAQ&#x…

12.13 LangChain 运行时引擎解析:AgentExecutor vs PlanAndExecute vs AutoGPT

LangChain 运行时引擎解析:AgentExecutor vs PlanAndExecute vs AutoGPT 关键词:LangChain AgentExecutor, PlanAndExecute 原理, AutoGPT 实现, 运行时控制流, 自主智能体架构 1. 三大运行时引擎的定位与差异 LangChain 提供不同层级的运行时引擎,满足从简单工具调用到自…

05. Springboot admin集成Actuator(一)

目录 1、前言 2、Actuator监控端点 2.1、健康检查 2.2、信息端点 2.3、环境信息 2.4、度量指标 2.5、日志文件查看 2.6、追踪信息 2.7、Beans信息 2.8、Mappings信息 3、快速使用 2.1、添加依赖 2.2、添加配置文件 2.3、启动程序 4、自定义端点Endpoint 5、自定…