Redis事务本质是一组命令的集合,可以一次执行多个命令,所有命令都会序列化,按顺序地串行化执行而不会被其它命令插入,不许插队。将一组需要一起执行的命令放到multi和exec两个命令之间。multi命令代表事务开始,exec命令代表事务结束,它们之间的命令是原子顺序执行的。
总结:Redis事务就是一次性、顺序性、排他性的执行一个队列中的一系列命令。
DISCARD #取消事务,放弃执行事务块内的所有命令。 EXEC #执行所有事务块内的命令。 MULTI #标记一个事务块的开始。 UNWATCH #取消WATCH命今对所有key的监视。 WATCH key [key。。。] #监视一个(或多个)key,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断。
WATCH 命令可以为 Redis 事务提供 check-and-set (CAS)行为,并实现乐观锁。
WATCH 使得 EXEC 命令需要有条件地执行: 事务只能在所有被监视键都没有被修改的前提下执行, 如果这个前提不能满足的话,事务就不会被执行。
WATCH 命令可以被调用多次,用户也可以在单个 WATCH 命令中监视任意多个键。 对key的监视从 WATCH 执行之后开始生效,直到调用 EXEC 为止。当 EXEC 被调用时,不管事务是否成功执行, 对所有key的监视都会被取消。另外,当客户端断开连接时,该客户端对key的监视也会被取消。
使用无参数的 UNWATCH 命令可以手动取消对所有key的监视。 对于一些需要改动多个key的事务,有时候程序需要同时对多个key进行加锁,然后检查这些key的当前值是否符合程序的要求。当值达不到要求时,就可以使用 UNWATCH 命令来取消目前对key的监视,中途放弃这个事务,并等待事务的下次尝试。
WATCH 可以用于创建 Redis 没有内置的原子操作。