redis学习之神奇的事务

直入主题,我们在使用关系型数据库的时候基本上都会接触到事务处理,就是逻辑上的一组操作,组成这组操作的各个单元,要不全都成功要不全都失败,这就是关系行数据库的事务。

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

redis的事务截然不同,它相对关系型数据库来说比较简单,它只能保证一个client发起的事务中的命令可以连续的执行,而中间不会插入其他client的命令。使用redis事务时,客户端会发送MULTI命令开始一个事务,随后客户端发送的命令会放到一个队列中, 等最后客户端发送EXEC命令触发事务, 一并执行事务中的所有命令。


redis学习之神奇的事务_第1张图片

可以看到,执行完set完命令之后,反馈信息是QUEUED,最后再执行exec,这些命令才会真正的执行

事务是一个原子操作:事务中的命令要么全部被执行,要么全部都不执行。

虽说命令一定会被执行,但是成功还是失败又是另一回事了哈哈哈,下图举例:


redis学习之神奇的事务_第2张图片

嗯,没什么好说的,就是这样的,redsi事务也没有rollback,铭记。



最后这个厉害了啊。

WATCH

WATCH key [key ...]

监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断。

上面就是redis手册中关于watch的解释,使用起来貌似很简单,就是我在multi之前,用watch去监视我要修改的key,如果说我在exec之前,

multi之后的这段时间,key被其他client修改,那么exec就会执行失败,返回(nil)

下图举例:


redis学习之神奇的事务_第3张图片

嗯,不管怎么样这个技能我是get到了。


哦忘了介绍命令:

redis学习之神奇的事务_第4张图片

最后说一句,夏天这个东西很快就来了减肥的要马甲线的抓紧了。

redis学习之神奇的事务_第5张图片
图片发自App

你可能感兴趣的:(redis学习之神奇的事务)