事务 — Redis 设计与实现
Posted 山水一程
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了事务 — Redis 设计与实现相关的知识,希望对你有一定的参考价值。
非事务状态下的命令以单个命令为单位执行,前一个命令和后一个命令的客户端不一定是同一个;
事务状态则是以一个事务为单位,执行事务队列中的所有命令:除非当前事务执行完毕,否则服务器不会中断事务,也不会执行其他客户端的其他命令。
Redis 的事务是不可嵌套的, 当客户端已经处于事务状态, 而客户端又再向服务器发送 MULTI 时, 服务器只是简单地向客户端发送一个错误, 然后继续等待其他命令的入队。 MULTI 命令的发送不会造成整个事务失败, 也不会修改事务队列中已有的数据。
WATCH 只能在客户端进入事务状态之前执行, 在事务状态下发送 WATCH 命令会引发一个错误, 但它不会造成整个事务失败,也不会修改事务队列中已有的数据(和前面处理 MULTI 的情况一样)。
- 带 WATCH 的事务
WATCH 命令用于在事务开始之前监视任意数量的键: 当调用 EXEC 命令执行事务时, 如果任意一个被监视的键已经被其他客户端修改了, 那么整个事务不再执行, 直接返回失败。
出处:https://redisbook.readthedocs.io/en/latest/feature/transaction.html
以上是关于事务 — Redis 设计与实现的主要内容,如果未能解决你的问题,请参考以下文章
Redis | 第9章 Lua 脚本与排序《Redis设计与实现》#yyds干货盘点#