Redis的事务
Redis事务的定义
Redis事务的主要作用就是串联多个命令防止别的命令插队
Multi,Exec,discard
从输入Multi命令开始、输入的命令都会依次进入命令队列中,但不会执行,直到输入Exec后,Redis会将之前的命令队列中的命令依次执行***
组队的过程中可以通过discard来放弃组队
组队中某个命令出现了报告错误,执行时整个的所有队列都会被取消
如果运行时阶段某个命令报出了错误,则只有报错的命令不会被执行,而其他命令都会被执行,不会回滚
区别于关系型数据库,如果关系型数据库有一个错误,则全部回滚(roll back)
锁的使用
在关系型数据库悲观锁使用很多,在Redis这种NoSQL数据库中乐观锁使用很多
WATCH key [key...]
在执行multi之前,先执行watch key1 [key2],可以监视一个(或多个)Key,如果在事务执行之前这个(或这些)key被其他命令所改动,那么事务将被全部取消
解答:因为我在exec之前在另个一个客户端更改了a的值,则watch监测下的a被改动,则事务将被全部取消
unwatch 取消watch对所有key的监视
Redis事务的特性