redis 之 redis事务

Redis事务

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

Redis的作用

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

Redis事务的三个特性

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

2.没有隔离级别的概念
  队列中的命令没有提交之前都不会实际的被执行,因为事务提交前任何指令都不会被实际执行,也就不存在“事务内的查询要看到事务里的更新,在事务外查询不能看到”这个让人万分头痛的问题 。

3.不保证原子性
  Redis同一个事务中如果有一条命令执行失败,其后的命令仍然会被执行,没有回滚 。

常用命令

命令 描述
multi  标记一个事务的开始
discard  取消事务,放弃执行事务块内的所有命令
exec 标记事务开始,开始执行队列中的命令
watch <key1> <key2>... 监视一个或者多个可以,如果在事务执行之前key的值发生改变,则事务将被打断
unwatch 取消watch命令对所有key的监视

图解

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

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

 事务的错误处理

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

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

原文地址:https://www.cnblogs.com/zero-vic/p/13291301.html