什么是事务
redis事务就是一个命令执行的队列,将一系列预定义命令包装成一个队列,当执行时,一次性按照添加顺序依次执行,中间不会被打断或者干扰
特性
- 一次性
- 顺序性
- 排他性
基本操作
#开启事务,此指令执行后,后续的所有指令均加入事务中
mutli
命令1
命令2
...
#执行事务,事务的结束位置,同时也是执行事务,与multi成对出现
exec
#取消事务,终止当前事务定义,发生再multi之前,exec之前
discard
注意事项
- 编译型错误,事务中所有的命令都不会被执行
set name ×
正确的格式是,上面缺少个value:
set key value √
-
运行时异常,再执行命令的时候,正确的命令可以正常执行,错误的命令抛出异常
set count num #设置一个值 multi # 开启事务 incr count #第一条,不能对字符串类型进行自增,错误的语句 set name lixuan #第二条,正确 get name #第三条,正确 exec # 执行事务 1) (error) ERR value is not an integer or out of range # 虽然第一条命令报错了,但是 依旧正常执行成功了! 2) OK 3) lixuan
如果遇到事务出错,只能用人工的方式,根据之前的记录,用set替换掉,redis不支持事务回滚