我是靠谱客的博主 笑点低未来,最近开发中收集的这篇文章主要介绍Redis 事务指令 MULTI、EXEC、DISCARD、WATCH、UNWATCHRedis 事务,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Redis 事务

Redis 事务可以一次执行多个命令, 并且带有以下三个重要的保证:

  • 批量操作在发送 EXEC 命令前被放入队列缓存。
  • 收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行。
  • 在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中。

一个事务从开始到执行会经历以下三个阶段:

  • 开始事务。
  • 命令入队。
  • 执行事务。
序号命令及描述
1DISCARD
取消事务,放弃执行事务块内的所有命令。
2EXEC
执行所有事务块内的命令。
3MULTI
标记一个事务块的开始。
4UNWATCH
取消 WATCH 命令对所有 key 的监视。
5WATCH key [key ...]
监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断。

 

1.DISCARD用来取消一个事务;

2.EXEC用来执行一个事务;

3.MULTI用来组装一个事务; 

4.WATCH用来监视一些key,一旦这些key在事务执行之前被改变,则取消事务的执行

5.WATCH取消 WATCH 命令对所有 key 的监视。

 

在用MULTI组装事务时,每一个命令都会进入到内存队列中缓存起来,如果出现QUEUED则表示我们这个命令成功插入了缓存队列,在将来执行EXEC时,这些被QUEUED的命令都会被组装成一个事务来执行。


1.调用EXEC之前的错误

有可能是由于语法有误导致的,也可能时由于内存不足导致的。只要出现某个命令无法成功写入缓冲队列的情况,redis都会进行记录,在客户端调用EXEC时,redis会拒绝执行这一事务。

2.调用EXEC之后的错误

而对于“调用EXEC之后的错误”(入队成功,执行出错),redis则采取了完全不同的策略,即redis不会理睬这些错误,而是继续向下执行事务中的其他命令。这是因为,对于应用层面的错误,并不是redis自身需要考虑和处理的问题,所以一个事务中如果某一条命令执行失败,并不会影响接下来的其他命令的执行。

指令“WATCH",这是一个很好用的指令,它可以帮我们实现类似于“乐观锁”的效果

 

 

WATCH都会尽职尽责的监视,一旦发现某个key被修改了,在执行EXEC时就会返回nil,表示事务无法触发。

最后

以上就是笑点低未来为你收集整理的Redis 事务指令 MULTI、EXEC、DISCARD、WATCH、UNWATCHRedis 事务的全部内容,希望文章能够帮你解决Redis 事务指令 MULTI、EXEC、DISCARD、WATCH、UNWATCHRedis 事务所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部