Redis事务的本质:一组命令的集合,在事务执行的过程中,会按照顺序执行
Redis事务没有隔离级别的概念!
所有的命令在事务中,并没有直接被执行,只有发起执行命令时候才会执行,Exec
Redis单条命令是原子性的,但事务不保证原子性
- redis的事务:
- 开启事务(multi)
- 命令入队(....)
- 执行事务(exec)
- 取消事务(DISCARD,事务队列中的命令都不会被执行)
运行时异常:执行命令时其他命令可以正常执行,错误命令抛出异常(命令和数据类型不符)
编译时异常:事务中所有命令都不会被执行(代码逻辑问题)
悲观锁:
无论什么时候都会加锁
乐观锁:
什么时候都不会加锁;更新数据的时候去判断一下,在此期间是否有人修改过这个数据
Redis监视测试
如果修改失败我们只需要unwatch,然后再watch即可