redis事物详解

Redis中的事务就是一组命令的集合,被依次顺序的执行,固然你能够放弃事务的执
数据库

行,那么全部事务里面的命令都不会执行。架构

关于Redis的事务有几点说明:线程

1:Redis的事务仅仅是保证事务里的操做会被连续独占的执行,由于是单线程架构,在执行完队列

事务内全部指令前是不可能再去同时执行其余客户端的请求的事务

2:Redis的事务没有隔离级别的概念,由于事务提交前任何指令都不会被实际执行,也就不存开发

在”事务内的查询要看到事务里的更新,在事务外查询不能看到”这种问题了监控

3:Redis的事务不保证原子性,也就是不保证全部指令同时成功或同时失败,只有决定是否开语法

始执行所有指令的能力,没有执行到一半进行回滚的能力请求

 Redis事务的基本过程nw

1:发送一个事务的命令给Redis,命令是multi

2:依次发送要执行的命令给Redis,Redis接到这些命令,并不会当即执行,而是放到等待执

行的事务队列里面

3:发送执行事务的命令给Redis,命令是exec

4:Redis会保证一个事务内的命令依次执行,而不会被其它命令插入

事务过程当中的错误处理

1:若是任何一个命令语法有错,Redis会直接返回错误,全部的命令都不会执行

2:若是某个命令执行错误,那么其它的命令仍然会正常执行,而后在执行后返回错误信息

3:Redis不提供事务回滚的功能,开发者必须在事务执行出错后,自行恢复数据库状态

 事务操做的基本命令

1:multi:设置事务开始

2:exec:执行事务

3:discard:放弃事务

4:watch:监控键值,若是键值被修改或删除,后面的一个事务就不会执行

5:unwatch:取消watch

  Watch说明

1:Redis使用Watch来提供乐观锁定,相似于CAS(Check-and-Set)

2:WATCH 能够被调用屡次

3:当EXEC 被调用后,全部的以前被监视的键值会被取消监视,无论事务是否被取消或者执

行。而且当客户端链接丢失的时候,全部东西都会被取消监视

相关文章
相关标签/搜索