Redis事务机制--基本命令与ACID

一、redis事务基本命令

1、multi与exec命令

              用multi开启一个事务,执行多条命令入队到事务中,最后由exec命令触发事务,执行事务中的所有命令

2、discard命令

              discard命令用于取消事务,清空事务中的队列,将客户端调整为非事务状态

3、watch命令

              watch命令用于在事务开启之前监视任意数量的键,当调用exec命令执行食物是,若该键被其他客户端修改,那么整个   事务不再执行,直接返回失败

4、redis执行事务过程原理图解

Redis事务机制--基本命令与ACID_第1张图片

二、redis事务之ACID

1、原子性(atomicity)(操作要么都执行要么都不执行)

     单个的redis命令的执行是原子性额,但redis没有在事务上增加任何维持原子性的机制,所以redis事务的执行不是原子性

     如果一个事务队列中的所有命令都被成功执行,那么称这个事务执行成功。

 2、一致性(consistency)(应满足完整性约束)

      入队错误:在命令入队过程中,如果客户端向服务端发送了错误的命令,比如命令的参数数量不对等,那么服务器将返回一  个错误信息,并将客户端的事务状态设为REDIS_DIRTY_EXEC

      执行错误:命令在事务执行过程中发生错误,比如对一个不同类型的key执行了错误操作,那么redis只会将错误包含在事务     结果中,不会引起事务中断或失败,也不会影响已执行事务的结果,故对事务的一致性没影响

3、隔离性(isolation)

     WATCH 命令用于在事务开始之前监视任意数量的键: 当调用 EXEC 命令执行事务时, 如果任意一个被监视的键已经被其他       客户端修改了, 那么整个事务不再执行, 直接返回失败。

4、持久性(durability)

     因为事务只是用队列包裹一组redis命令,并没有提供任何额外的持久性功能,所以事务的持久性功能由redis所使用的持久化       模式决定        【redis持久化模式:rdb(数据内存备份)、aof(append only if增量备份,每隔一秒做一次备份)】

      

 

你可能感兴趣的:(Redis)