Redis(四)

Redis的事务

Redis事务的定义

Redis事务是一个单独的隔离操作,事务中所有的命令都会序列化,按顺序地执行,事务在执行的过程中,不会被其他客户端发送来的命令请求所打断

Redis事务的主要作用就是串联多个命令防止别的命令插队

Multi,Exec,discard

从输入Multi命令开始、输入的命令都会依次进入命令队列中,但不会执行,直到输入Exec后,Redis会将之前的命令队列中的命令依次执行***

 Redis(四)_第1张图片

 

 

 

Redis(四)_第2张图片

组队的过程中可以通过discard来放弃组队

Redis(四)_第3张图片

组队中某个命令出现了报告错误,执行时整个的所有队列都会被取消

Redis(四)_第4张图片

 

 如果运行时阶段某个命令报出了错误,则只有报错的命令不会被执行,而其他命令都会被执行,不会回滚

 Redis(四)_第5张图片

 

 区别于关系型数据库,如果关系型数据库有一个错误,则全部回滚(roll back)

锁的使用

在关系型数据库悲观锁使用很多,在Redis这种NoSQL数据库中乐观锁使用很多

Redis(四)_第6张图片

 

 

WATCH key [key...]

在执行multi之前,先执行watch key1 [key2],可以监视一个(或多个)Key,如果在事务执行之前这个(或这些)key被其他命令所改动,那么事务将被全部取消

 Redis(四)_第7张图片

 

 解答:因为我在exec之前在另个一个客户端更改了a的值,则watch监测下的a被改动,则事务将被全部取消

unwatch 取消watch对所有key的监视

Redis事务的特性

 Redis(四)_第8张图片

你可能感兴趣的