nber1994



redis事务

January 8, 2019

redis事务

事务实现

事务开始

命令入队

事务队列

typedef struct redisClient {
    //事务状态
    multiState mstate;
} redisClient;
typedef struct multiState {
    //事务队列,FIFO顺序
    multiCmd *commands;
    //已入队命令计数
    int count;
}

事务对列是一个multiCmd的数组

typedef struct multiCmd {
    //参数
    robj **argv;
    //参数数量
    int argc;
    //命令指针
    struct redisCommand *cmd;
}

执行事务

watch命令

watch命令监听数据库键

typedef struct redisDb {
    //正在被watch命令监听的键
    dict *watched_keys;
} RedisDB;

监听的触发

事务的ACID

重点回顾