概念
可以一次执行多个命令,本质上是一组命令的集合。
一个事务中的所有命令都会序列化,按顺序地串行化执行而不会被其他命令插入,不许加塞
可以做什么
一个队列中,一次性,顺序性,排他性地执行一系列命令
常用命令
1.multi
标记开始事务
2.discard
取消事务,放弃执行事务里面的所有命令
3.exec
执行事务所有命令
4.watck key[key]
监控1个或多个key,如果在执行事务之前,这些key被其他命令改动,那么事务将被打断
5.unwatch
取消对所有key的监控
执行流程
正常执行
1.multi 开始事务
2.设置值是会显示queued,意思是入队
3.设置完后,exec,回显每条命令的执行结果
放弃事务
有时候命令打错了,或者输入信息有误/不一致,需要取消操作
使用discard即可放弃事务的所有命令的执行
命令错误
若在设置多个key时,某一个有语法错误,那么事务里的全部命令将不执行
运行错误
当你的语法没错,但是运行可能出现错误,如:尝试将一个string类型的数据进行数学操作
这时事务,将正确的命令通过执行,不符合redis的规范,将抛出对应的异常,且不回滚
watch
监控key
如果key被修改,那么在修改后的第一个事务失败
正常执行
1.watch key
2.开启事务,执行命令
3.正常执行,返回每条命令执行结果
被修改
1.watch ley
2.key被修改
3.开启事务,执行失败返回(nil)
unwatch
解除所有key的监控,可以对所有key任意修改
参考资料:尚硅谷周阳redis讲解
本文若有错误请指正,互相学习,加油!