开发者学堂课程【Redis 入门到精通(进阶篇):事务-事务的基本操作(定义,取消,执行)】学习笔记与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/765/detail/13431
事务-事务的基本操作(定义,取消,执行)
内容介绍
一、redis 事务界定的方式
二、事务定义过程中发现出了问题,怎么办?
一、redis 事务界定的方式
开启事务:multi
开启事务的作用:设定是事务的开启位置,此指令执行后,后续的所有指令均加入到事务中。
执行事务:exec
执行事务的作用:设定事务的结束位置,同时执行事务,与multi成对出现,成对使用。
注意:加入事务的命令暂时进入到任务队列中,并没有立即执行,只有执行exec命令才开始执行
进行操作:
1、启动服务器端口6379,同时开两个客户端已经连接,
在客户端1中 127.0.0.1:6379> set name itheima
OK
127.0.0.1:6379>get name
当客户端1 get name 时,在客户端2中,
127.0.0.1:6379> set name itcast
OK
127.0.0.1:6379>get name
这时执行,最后的值为“itcast”。这是因为没有事务造成的现象。
2、解决上述现象
执行multi命令:127.0.0.1:6379>multi
OK
再执行127.0.0.1:6379>set age 30
QUEUED
(进入队列)
127.0.0.1:6379>get age
QUEUED
(再进入队列)
127.0.0.1:6379>set age 31
QUEUED
127.0.0.1:6379>get age
QUEUED
127.0.0.1:6379>exec –
(表示命令已输完,可以执行)
3、返回的结果为
1)、OK
2)、30
4)、OK
5)、31
返回的结果是每一个命令的执行结果,这就是整个事务的执行过程,在这个过程中,其他命令是不可能插队的。
二、事务定义过程中发现出了问题,怎么办?
取消事务:disard
取消事务作用:终止当前事务的定义,发生在multi之后,exec 之前
进行操作执行指令:
127.0.0.1:6379>multi
OK
127.0.0.1:6379>set age 32
QUEUED
127.0.0.1:6379>get age
QUEUED
127.0.0.1:6379>set age 33
QUEUED
127.0.0.1:6379>discard
OK
127.0.0.1:6379>exec
(eroor)ERR EXEC without MULTI
(此执行必须有 multi,)
必须保障事务在定义过程中发现问题,可及时取消掉。
(注:没有其他事务命令,其他事务命令加到事务执行的序列中)