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

redis-----事务

Redis 事务是一组命令的集合,它可以保证这些命令要么全部执行,要么全部不执行,从而确保数据操作的原子性。

Redis 事务主要通过以下几个命令实现:

  1. MULTI:标记一个事务块的开始
  2. EXEC:执行所有在事务块内的命令
  3. DISCARD:取消事务,放弃执行事务块内的所有命令
  4. WATCH:监视一个或多个键,如果在事务执行前这些键被其他命令修改,事务将被打断

watch要在MULTI之前使用

1.Redis 事务的基本流程:

127.0.0.1:6379> MULTI       # 开始事务
OK
127.0.0.1:6379> SET a 1     # 命令入队
QUEUED
127.0.0.1:6379> SET b 2     # 命令入队
QUEUED
127.0.0.1:6379> GET a       # 命令入队
QUEUED
127.0.0.1:6379> EXEC        # 执行事务
1) OK
2) OK
3) "1"

2.事务的特点:

  • 原子性:事务中的所有命令要么全部执行,要么全部不执行
  • 隔离性:事务执行过程中,不会被其他客户端发送的命令干扰
  • 没有回滚:如果事务中的某个命令执行失败,其他命令仍然会继续执行(这与传统数据库事务不同)

3.使用 WATCH 实现乐观锁:

127.0.0.1:6379> WATCH balance  # 监视balance键
OK
127.0.0.1:6379> MULTI
OK
127.0.0.1:6379> INCR balance 100
QUEUED
127.0.0.1:6379> EXEC  # 如果balance在WATCH后被修改,会返回nil
1) (integer) 200

4.注意事项:

  1. Redis 事务不支持传统数据库的回滚机制,如果某个命令执行失败,其他命令仍会继续执行
  2. 事务中的命令会按顺序执行,不会被其他客户端的命令插入(开启事务后,事务中的命令会存放在客户端本地的事务队列中,其他客户端的命令会被 Redis 单线程立即处理(除非当前正在执行阻塞命令)。通过事件循环机制逐个处理命令。当本地客户端exec开始执行事务时,,Redis 会将事务队列中的所有命令一次性取出并按顺序执行,执行期间会阻塞其他客户端的命令)
  3. WATCH 命令可以实现乐观锁,适合并发场景下的数据安全操作
  4. 事务执行期间,Redis 会阻塞其他客户端的请求,因此事务不宜包含过多命令

Redis 事务适合简单的原子性操作,对于复杂的事务需求,可能需要结合其他机制来实现。


文章转载自:

http://TniSB5lL.crqbt.cn
http://jh7qswXa.crqbt.cn
http://F4APPovj.crqbt.cn
http://udDg0Jrg.crqbt.cn
http://IcgwreM4.crqbt.cn
http://sgac9vr6.crqbt.cn
http://JLC48dYP.crqbt.cn
http://EnTwBwQX.crqbt.cn
http://HyKKJIkP.crqbt.cn
http://S6CyZdrW.crqbt.cn
http://psUyNA35.crqbt.cn
http://Qu4hComn.crqbt.cn
http://Z8LR5fmS.crqbt.cn
http://TnIIPNJB.crqbt.cn
http://srboOFku.crqbt.cn
http://DuKVDNrL.crqbt.cn
http://K4nIZGQO.crqbt.cn
http://1aWAPkwe.crqbt.cn
http://E1u8nq06.crqbt.cn
http://CUXY0hXk.crqbt.cn
http://cDi1dJML.crqbt.cn
http://wPBj8hFh.crqbt.cn
http://llNKflG2.crqbt.cn
http://3NXBKus5.crqbt.cn
http://sPrp3FZL.crqbt.cn
http://1ykTToG0.crqbt.cn
http://i4swVmHx.crqbt.cn
http://e7beHTjE.crqbt.cn
http://kBNy4tEP.crqbt.cn
http://G0APVDSO.crqbt.cn
http://www.dtcms.com/a/370201.html

相关文章:

  • 集成学习(随机森林算法、Adaboost算法)
  • 形式化方法与安全模型
  • Python两种顺序生成组合
  • 【Python自动化】 21 Pandas Excel 操作完整指南
  • Unity与硬件交互终极指南:从Arduino到自定义USB设备
  • Codeforces Round 1046 (Div. 2) vp补题
  • 【LeetCode热题100道笔记】二叉树的右视图
  • Day22_【机器学习—集成学习(1)—基本思想、分类】
  • 自动化运维,ansible综合测试练习题
  • 【面试题】领域模型持续预训练数据选取方法
  • OpenHarmony之USB Manager 架构深度解析
  • 新服务器初始化:Git全局配置与SSH密钥生成
  • 主流分布式数据库集群选型指南
  • 【Proteus仿真】定时器控制系列仿真——秒表计数/数码管显示时间
  • python advance -----object-oriented
  • 开源与定制化对比:哪种在线教育系统源码更适合教育培训APP开发?
  • 【51单片机-B030】【protues仿真】基于51单片机万年历系统
  • mysql 是否“100%”地解决幻读?
  • 分布式系统的设计哲学:架构模式全面介绍与选型策略
  • windows11 安装charm成功
  • IPD流程落地:IPMT的开发评审逻辑
  • 数字化赋能全球扩张:名创优品携手巨益科技的信息化转型深度实践
  • OpenCV - 图像的IO操作
  • Windows 11 手动下载安装配置 uv、配置国内源
  • Wisdom SSH 是一款搭载强大 AI 助手的工具,能显著简化服务器配置管理流程。
  • Linux基础知识(二)
  • Redis 在互联网高并发场景下的应用--个人总结
  • 算法题-链表03
  • 版本发布流程手册:Release分支规范与Bug分级标准全解析
  • 目标检测中的池化层