redis事务的特点
redis事务
redis事务包含了一组命令,这些命令的执行是一次性、顺序性的。
和数据库事务的区别
- redis事务有:开始事务、命令入队、执行事务 三个阶段。
- redis事务没有隔离级别的概念,并不会做内部的预查询。
- redis事务不保证原子性,且没有回滚。
redis事务命令
watch key1 key2 #监视key1和key2,如果执行过程中被其它命令更改,则事务被打断。即乐观锁机制
multi #指定事务开始
exec #指定事务执行,且前面监控锁会被取消
discard #指定事务取消
unwatch #取消对key的监控
场景
- discard会将前面的命令都取消。
- 事务在exec前,如果某个命令出错(比如命令不存在,而非语法错误),则所有命令都不会执行。
- 事务在exec前,如果某个命令有语法性错误(如incr了一个字符串),则其它命令照样执行。
- 事务在exec前,如果watch的某个key发生了变化,则事务中的命令都不会执行。