【Redis】事务

前言:

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

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

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

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

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

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


事务操作:

MULTI:开启事务

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

EXEC:执行事务

DISCARD:

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

WATCH:

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

例如以下场景

但如果使用了watch命令

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

相关推荐
2601_9621741712 小时前
小试牛刀-SpringBoot集成SOL链
数据库·spring boot·后端
如何取名12 小时前
结合实际业务进行LRU淘汰算法优化设计(数据库开发日志)
数据库·算法
HanhahnaH12 小时前
Outbox 投递器:事务性发件箱模式详解
数据库
新时代牛马12 小时前
epoll 源码路径:从epoll_ctl 到ep_poll 的就绪唤醒
网络·数据库·网络协议
小蒜学长12 小时前
基于SpringBoot + Vue的智能健身房管理系统的设计与实现(代码+数据库+LW)
java·数据库·vue.js·spring boot·后端
芦柑46412 小时前
画布和3D导演台工具:短剧分镜从素材整理到空间预演的完整链路
服务器·前端·数据库
专注仿真12 小时前
TRAE Work 的实战
数据库·人工智能·分析
ACP广源盛1392462567313 小时前
端侧 AI 硬件架构实践@ACP#中端边缘整机 PCIe 扩展与 IX7012 器件分析
大数据·数据库·人工智能·嵌入式硬件·开源·硬件架构
ACP广源盛1392462567313 小时前
端侧 AI 硬件架构探讨@ACP#多外设高密度整机 PCIe 扩展与 IX7024 器件分析
大数据·数据库·人工智能·嵌入式硬件·开源·硬件架构
数智启示录13 小时前
Doris精讲篇(六) 从第一批小文件到 -235:Doris 是怎样被正常写入拖死的
大数据·数据库·经验分享·面试·flink