如何执行
-
multi开启事务
- 将客户端的
REDIS_MULTI
选项打开,即非事务状态切换到事务状态
- 将客户端的
-
之后的每次操作都是缓存在服务端的队列中
- 客户端处于非事务状态下时,每条命令都会被服务器立即执行
- 客户端处于事务状态下时,不会立即执行命令,而是将命令放到事务队列中,然后返回
QUEUED
-
EXEC
DISCARD
MULTI
WATCH
四条命令不会放入队列而是直接执行-
EXEC
执行此次事务队列中的命令,以FIFO
先入先出方式,会返回给客户端所有命令的结果 -
DISCARD
取消一个事务,清空事务队列,将客户端状态重置为非事务状态 -
MULTI\WATCH
redis事务不可嵌套,所以此命令会返回一个错误
-
事务队列
- 系一个数组,包含三个属性:要执行的命令、命令的参数、参数的个数
-
exec执行事务
- 依次执行事务队列中的命令,以
FIFO
先入先出方式,会返回给客户端所有命令的结果
- 依次执行事务队列中的命令,以
带WATCH的事务
WATCH
监视锁,监控任意数量的键,执行事务时会检查键是否改变,如果改变则取消这次的事务。