多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
`Redis`中每个客户端都有记录当前客户端的事务状态`multiState`,下面就是一个客户端`client`的数据结构定义: ~~~c typedef struct client { uint64_t id;//客户端唯一 id multiState mstate; //MULTI 和 EXEC 状态(即事务状态) //...省略其他属性 } client; ~~~ `multiState`数据结构定义如下: ~~~c typedef struct multiState { multiCmd *commands;//存储命令的 FIFO 队列 int count;//命令总数 //...省略了其他属性 } multiState; ~~~ `multiCmd`是一个队列,用来接收并存储开启事务之后发送的命令,其数据结构定义如下: ~~~c typedef struct multiCmd { robj **argv;//用来存储参数的数组 int argc;//参数的数量 struct redisCommand *cmd;//命令指针 } multiCmd; ~~~ 我们以上面事务的示例截图为例,可以得到如下所示的一个简图: ![](https://img.kancloud.cn/0c/4e/0c4ebdaa49f0e5373a6979da5dcbdf87_801x353.png)