Redis事务

如何执行

  1. multi开启事务

    • 将客户端的REDIS_MULTI选项打开,即非事务状态切换到事务状态
  2. 之后的每次操作都是缓存在服务端的队列中

    • 客户端处于非事务状态下时,每条命令都会被服务器立即执行
    • 客户端处于事务状态下时,不会立即执行命令,而是将命令放到事务队列中,然后返回QUEUED
    • EXEC DISCARD MULTI WATCH 四条命令不会放入队列而是直接执行
      • EXEC 执行此次事务队列中的命令,以FIFO先入先出方式,会返回给客户端所有命令的结果
      • DISCARD取消一个事务,清空事务队列,将客户端状态重置为非事务状态
      • MULTI\WATCHredis事务不可嵌套,所以此命令会返回一个错误

    事务队列

    • 系一个数组,包含三个属性:要执行的命令、命令的参数、参数的个数
    数组结果
  3. exec执行事务

    • 依次执行事务队列中的命令,以FIFO先入先出方式,会返回给客户端所有命令的结果

带WATCH的事务

WATCH监视锁,监控任意数量的键,执行事务时会检查键是否改变,如果改变则取消这次的事务。