[001-03-007].第07节:Redis中的事务

我的后端学习大纲
我的Redis学习大纲


1、Redis事务是什么:

  • 1.可以一次执行多个命令,本质是一组命令的集合。一个事务中的所有命令都会序列化, 按顺序地串行化执行而不会被其他命令插入,不许加塞
  • 2.一个队列中,一次性、顺序性、排他性的执行一系列命令

2、Redis事务和数据库事务对比:


3、基本操作:

3.1.常用命令:

3.2.正常执行

  • 在执行exec命令的时候,会一次性的执行上述所有的命令

3.3.放弃事务:

a.命令说明:

  • MULTI :事务开始
  • DISCARD :放弃事务

b.案例演示:

b.官网说明:


3.4.全体连坐:

a.命令说明:

  • 在MULTI 和 EXEC 之间有一个指令语法错误,所有的命令都不会执行

a.操作演示:

c.官网说明:


3.5.冤头债主:

a.命令说明:

  • 1.Redis 不提供事务回滚的功能,开发者必须在事务执行出错后,自行恢复数据库状态
  • 2.注意和传统数据库事务区别,不一定要么一起成功要么一起失败

b.操作演示:

c.官网说明:


3.6.watch监控:

a.Redis使用Watch 来提供乐观锁锁定

  • 1.悲观锁:
    • 认为每次去拿数据都很认为别人会修改,所以每次拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁
  • 2.乐观锁:
    • 认为每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,提交版本必须 大于 记录当前版本才能执行更新

b.watch

  • 1.初始化 键值(k1 和 balance 两个key),先监控再开启multi,保证两key变动在同一事务内
b2.有加塞篡改:
  • 1.watch命令是一种乐观锁的实现,Redis在修改的时候会检测数据是否被更改,如果更改了,则执行失败
  • 2.第一个窗口蓝色框第5步执行结果返回为空,也就是相当于是失败,笔记见最下面官网说明

c.unwatch

  • 1.操作演示:
  • 一旦执行了 exec 之前加的watch监控锁都会被取消掉
  • 当客户端连接丢失的时候(比如退出连接),所有东西都会被取消监视

相关推荐
阿坤带你走近大数据几秒前
Oracle-表空间temp
数据库·oracle
Navicat中国几秒前
数据库事务隔离级别的实践指南
数据库·navicat
马优晨4 分钟前
数据库的连接池、最大连接池会话数目、SQL查询超时时间、连接等待超时时间是什么意思?
数据库·数据连接池·最大连接池会话数目·sql查询超时·连接等待超时
2301_7693406710 分钟前
SQL如何处理分组后的空值统计_善用COALESCE与聚合函数
jvm·数据库·python
2301_7820404513 分钟前
在 Go 语言中声明包级(全局)映射的正确方法
jvm·数据库·python
zh15702313 分钟前
如何在 macOS 中使用 launchd 每分钟执行一次 PHP 脚本
jvm·数据库·python
阿正呀14 分钟前
HTML怎么显示计量值_HTML meter标签应用场景【指南】
jvm·数据库·python
qq_4138474017 分钟前
如何脱机维护表空间数据文件_OFFLINE与ONLINE状态的切换场景
jvm·数据库·python
OpenClawCSDN18 分钟前
2026年腾讯云如何安装和集成Hermes Agent/OpenClaw?深度剖析
数据库·阿里云·云计算·腾讯云·京东云
鸽芷咕20 分钟前
Oracle迁移到KingbaseES实战:语法差异、函数映射与避坑指南
数据库·oracle