事务 — 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 设计与实现

《redis设计与实现》目录

Redis | 第9章 Lua 脚本与排序《Redis设计与实现》#yyds干货盘点#

Redis | 第10章 二进制数组慢查询日志和监视器《Redis设计与实现》#yyds干货盘点#

JDBC的架构设计

Redis设计与实现2.3:集群