Redis(设计与实现):---事务之事务的实现(MULTI命令、EXEC命令)

本文介绍了Redis的事务功能,包括事务的特性,如一次性、按顺序执行多个命令,不支持回滚机制。文章详细阐述了事务的开始(MULTI命令)、命令入队、事务执行过程,并探讨了事务队列的结构和命令处理规则。在执行事务时,服务器会根据EXEC命令执行事务队列中的所有命令,并将结果返回给客户端。
摘要由CSDN通过智能技术生成

事务功能

Redis通过MULTI、EXEC、WATCH等命令来实现**事务(transaction)**功能

事务的特性:

  • 事务提供了一种将多个命令请求打包,然后一次性、按顺序地执行多个命令的机制
  • 并且在事务执行期间,服务器不会中断事务而改去执行其他客户端的命令请求,它会将事务中的所有命令都执行完毕,然后才去处理其他客户端的命令请求
  • Redis事务不支持回滚机制,具体见ACID原子性:

事务的错误处理:

  • 如果事务中的命令是在执行期间出现了错误,事务的后续命令也会继续执行下去,并且之前执行的命令也不会有任何影响
  • 事务因为命令入队出错而被服务器拒绝执行,事务中的所有命令都不会被执行

错误处理具体见下一篇文章。

以下是一个事务执行的过程,该事务首先以一个MULTI命令为开始,接着将多个命令放 入事务当中,最后由EXEC命令将这个事务提交(commit)给服务器执行:

在这里插入图片描述

事务的流程

  • 事务开始
  • 命令入队
  • 事务执行

一、事务开始(MULTI命令)

  • MULTI命令的执行标志着事务的开始:
    在这里插入图片描述
    MULTI命令可以将执行该命令的客户端从非事务状态切换至事务状态,这一切换是通过在客户端状态的flags属性中打开REDIS_MULTI标识来完成的,MULTI命令的实现可以用以 下伪代码来表示:
def MULTI():
    # 打开事务标识
    client.flags |= R
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值