Redis-事务笔记

redis事务的执行过程

事务从开始到结束通常会经历3个阶段:

  • 事务开始 //MULTI
  • 命令入队
  • 事务执行 //EXEC

事务开始

redis > MULTI
ok

MULTI命令可以将客户端从非事务状态切换至事务状态,是通过在客户端状态的flags属性中打开REDIS_MUTLI标志实现的

命令入队

当客户端处于事务状态时,所有除EXEC、DISCARD、WATCH、MULTI外的操作时,将被放入事务队列中,
每个客户端都有自己的事务状态,对应了每个redisClient结构体中的multiState mstate

typedef struct redisClient {
	//...
	
	//事务转态
	multiState mstate;
	
	//...
}redisClient ;

typedef struct multiState {
	//事务队列,FIFO
	multiCmd *commands;

	//已入队的计数
	int count;
} multiState ;

WATCH命令

WATCH命令在EXEC之前监视一个key的变化,如果该key被(别的客户端)改变了,那么之后的EXEC将不会执行。

你可能感兴趣的:(redis)