简单来讲,redis的事务就是将多个事务串联起来,统一交给服务器执行,统一返回结果redis
2.若是执行阶段某个命令报出了错误,则只有报错的命令不会被执行,而其余的命令都会执行,不会回滚数据库
经过事务解决问题服务器
悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,因此每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到了不少这种锁机制,好比行锁,表锁等,读锁,写锁等,都是在作操做以前先上锁spa
乐观锁(Optimistic Lock), 顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会修改,因此不会上锁,可是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可使用版本号等机制。乐观锁适用于多读的应用类型,这样能够提升吞吐量。Redis就是利用这种check-and-set机制实现事务的。blog
取消 WATCH 命令对全部 key 的监视。若是在执行 WATCH 命令以后, EXEC 命令或 DISCARD 命令先被执行了的话,那么就不须要再执行 UNWATCH 了。队列
事务中的全部命令都会序列化、按顺序地执行。事务在执行的过程当中,不会被其余客户端发送来的命令请求所打断。事务
队列中的命令没有提交以前都不会实际的被执行,由于事务提交前任何指令都不会被实际执行,也就不存在“事务内的查询要看到事务里的更新,在事务外查询不能看到”这个让人万分头痛的问题 序列化
Redis同一个事务中若是有一条命令执行失败,其后的命令仍然会被执行,没有回滚请求