一、redis的事务是什么
可以一次执行多个命令,本质上是一组命令的集合。事务中的所有命令都会序列号,按顺序一个一个的执行,不会被其他命令中途插入,不许加塞。
可以进行批处理操作
二、redis的事务能做什么
在一个队列中,一次性、顺序性、排他性的执行一系列命令。
共经过三个阶段:
1.开启事务 multi
2.入队 将命令存入queue中
3.执行 exec
三、redis的事务怎么使用
redis事务相关的命令
multi:开启事务,接下来输入的命令(比如set k1 v1)都会被置入到事务块(命令队列)中
exec:执行事务命令队列中的所有命令
discard:取消事务,放弃执行事务块内的所有命令
watch key名:监控某个key,如果事务在提交事,监控的那个key与获取时的值不相等那么就取消本次事务。
对于redis的事物,有5种情况:
1.正常执行:事务中所有命令都正确,没有发生异常。
2.放弃事务:在命令中包含discard,放弃执行所有命令
3.命令语法错误:在事务块中的命令出现了语法相关的错误(比如gettt k1,redis中没有这样的命令),那么这次的事务就会全部取消执行。
4.非命令语法错误:比如,k1的值为a,在事务中执行了incur k1,由于k1是非数字,所以这条命令会出错,这种情况下事务仍会执行,只有这条命令会抛出异常
5.whatch key:whatch有点类似乐观锁,监视一个key或多个,如果在事务开始执行之前,这个、这些key被其他命令更改了,那么这次的事务就会被打断。
unwatch:取消监控,在执行exec后,之前加的监控锁都会被取消掉
四:redis的事务的特性
1.单独的隔离操作:事务中所有的命令都会序列号、按顺序的执行,不会被其他客户端的命令打断
2.没有像SQL数据库的隔离级别的概念,因为事务在执行之前,所有存入队列的命令都不会执行.
3.不保证原子性:redis中如果没有语法错误的语句执行错误,其他的命令并不会回滚