由于redis是单线程来处理所有client的请求,所以redis只能保证一个redis-client发起的事务中的命令可以连续的执行,而中间不会插入其他redis-client的命令。
一般情况下redis在接受到一个client发来的命令后会立即处理并 返回处理结果,但是当一个client在一个连接中发出multi命令有,这个连接会进入一个事务上下文,该连接后续的命令并不是立即执行,而是先放到一 个队列中。当从此连接受到exec命令后,redis会顺序的执行队列中的所有命令。并将所有命令的运行结果打包到一起返回给client.然后此连接就 结束事务上下文
- 事务关键字
MULTI、EXEC、DISCARD、WATCH
1).MULTI用来组装一个事务;
2).EXEC用来执行一个事务;
3).DISCARD用来取消一个事务;
4).WATCH用来监视一些key,一旦这些key在事务执行之前被改变,则取消事务的执行。
- 事务常见错误
1):执行exec之前的错误(拒绝执行该事务)
2):执行exec之后的错误(不理睬这些错误,继续执行)
【WATCH】本身的作用是“监视key是否被改动过”,而且支持同时监视多个key,只要还没真正触发事务,WATCH都会尽职尽责的监视,一旦发现某个key被修改了,在执行EXEC时就会返回nil,表示事务无法触发。 - 操作示例
1):组装一个事务
2):取消一个事务
3):监视
4):exec后错误
5):exec前错误
本文深入解析Redis事务机制的工作原理,包括事务的启动、取消、执行流程及错误处理方式。介绍了MULTI、EXEC、DISCARD、WATCH等事务关键字的使用方法,并通过示例展示了如何在实际场景中应用这些命令。
2210

被折叠的 条评论
为什么被折叠?



