redis事务的特点

redis事务

redis事务包含了一组命令,这些命令的执行是一次性、顺序性的。

和数据库事务的区别

  1. redis事务有:开始事务、命令入队、执行事务 三个阶段。
  2. redis事务没有隔离级别的概念,并不会做内部的预查询。
  3. redis事务不保证原子性,且没有回滚。

redis事务命令

watch key1 key2   #监视key1和key2,如果执行过程中被其它命令更改,则事务被打断。即乐观锁机制
multi  #指定事务开始
exec  #指定事务执行,且前面监控锁会被取消
discard  #指定事务取消
unwatch  #取消对key的监控

场景

  1. discard会将前面的命令都取消。
  2. 事务在exec前,如果某个命令出错(比如命令不存在,而非语法错误),则所有命令都不会执行。
  3. 事务在exec前,如果某个命令有语法性错误(如incr了一个字符串),则其它命令照样执行。
  4. 事务在exec前,如果watch的某个key发生了变化,则事务中的命令都不会执行。