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

【Redis】事务

前言:

对比MySQL事务:【MySQL篇】事务的认识以及四大特性-CSDN博客

  • 弱化的原子性: redis 没有 "回滚机制". 只能做到这些操作 "批量执行". 不能做到 "一个失败就恢复到初始状态".   
  • 不保证一致性: 不涉及 "约束".  也没有回滚. MySQL 的⼀致性体现的是运行事务前和运行后 , 结果都是合理有效的, 不会出现中间非法状态.  
  • 不需要隔离性: 也没有隔离级别, 因为不会并发执行事务 (redis 单线程处理请求) .  
  • 不需要持久性: 是保存在内存的. 是否开启持久化, 是redis-server 自己的事情, 和事务无关. 

Redis的事务没有像MySQL那么全,它主要的意义将操作“打包”成一个整体,避免其他客户端的命令,插队到中间~

Redis实现事务,是在里面引入了一个队列(每个客户端都有)

当开启事务的时候,客户端输入命令,就会发送到服务器并且命令进入队列中,并不是立即执行,而是遇到执行事务的命令时候,这时会把队列里面的命令按照顺序依次执行~

因此, Redis 的事务的功能相比于 MySQL 来说, 是弱化很多的. 只能保证事务中的这几个操作是 "连续的", 不会被别的客户端 "加塞", 仅此而已.


事务操作:

MULTI:开启事务

此时队列中保存了上述请求,但如果其他客户端想查看里面的内容是查找不到的 

EXEC:执行事务

DISCARD:

放弃当前事务. 此时直接清空事务队列. 之前的操作都不会真正执行到.

WATCH:

在执行事务的时候, 如果某个事务中修改的值, 被别的客户端修改了, 此时就容易出现数据不⼀致的问题.

例如以下场景

但如果使用了watch命令

UNWATCH:取消对key监控,是watch的逆操作 


http://www.kler.cn/a/516732.html

相关文章:

  • Python装饰器的高级用法:动态装饰器与参数传递的深度解析
  • 微服务学习-Nacos 注册中心实战
  • FTP 与 LFTP 命令的介绍及常用功能
  • Trimble三维激光扫描-地下公共设施维护的新途径【沪敖3D】
  • 基于JAVA的微信点餐小程序设计与实现(LW+源码+讲解)
  • 在elasticsearch中,document数据的写入流程如何?
  • Windows Docker Desktop安装及使用 Docker 运行 MySQL
  • elasticsearch segment数量对读写性能的影响
  • STM32_SD卡的SDIO通信_基础读写
  • 互联网产品品牌形象构建与开源AI智能名片S2B2C商城小程序的应用研究
  • Lock和Synchronized的区别,源码分析
  • 基于Springboot用axiospost请求接收字符串参数为null的解决方案
  • 【unity游戏开发之InputSystem——02】InputAction的使用介绍(基于unity6开发介绍)
  • 68,[8] BUUCTF WEB [RoarCTF 2019]Simple Upload(未写完)
  • JAVASE入门八脚-Spring ,时间Data,Dateformat,parse,Math,容器
  • Linux网络 | 网络计算器客户端实现与Json的安装以及使用
  • 深度剖析 PyTorch框架:从基础概念到高级应用的深度学习之旅!
  • OpenCV: 深入理解OpenCV中CV_WRAP_AS宏及其作用
  • 城市生命线安全保障:技术应用与策略创新
  • 使用 ECS服务器 和 vsCode 搭建远程开发站
  • Windows电脑不小心点击了关机,关机过程中如何阻止
  • 20250121面试鸭特训营第29天
  • Python的进程和线程
  • stm32f103 单片机(一)第一个工程
  • 2025.1.21——六、BUU XSS COURSE 1 XSS漏洞|XSS平台搭建
  • react引入DingTalk-JinBuTi字体