Redis事务:是一些列redis命令的集合,在一次单独的步骤中执行一组命令,Redis会将一个事务中的所有命令序列化,然后按顺序执行。
multi 、 exec 、 discard 、watch
- MULTI
multi用于标记一个事务块的开始,Redis会将后续的命令逐个放入队列中,然后才能使用EXEC命令原子化地执行这个命令序列。 - EXEC
exec执行所有事务块内的命令, 在一个事务中执行所有先前放入队列的命令,然后恢复正常的连接状态。 - DISCARD
discard清除所有先前在一个事务中放入队列的命令,然后恢复正常的连接状态。
如果使用了WATCH命令,那么DISCARD命令就会将当前连接监控的所有键取消监控。 - WATCH
watch当某个事务需要按条件执行时,就要使用这个命令将给定的键设置为受监控的。
WATCH key [key …] - UNWATCH
unwatch清除所有先前为一个事务监控的键。
如果调用了EXEC或DISCARD命令,那么就不需要手动调用UNWATCH命令。
Redis使用方法
使用MULTI命令便可以进入一个Redis事务。这个命令的返回值总是OK。此时,用户可以发出多个Redis命令。Redis会将这些命令放入队列,而不是执行这些命令。一旦调用EXEC命令,那么Redis就会执行事务中的所有命令。相反,调用DISCARD命令将会清除事务队列,然后退出事务。
EXEC命令的返回值是一个数组,包含事务中每个命令的执行结果,且响应的顺序和命令发出时的顺序一样。
- 事务中的所有命令都是序列化且都是按顺序执行的。
- 所有的命令要么都被一起处理,要么全都没有被处理,所以Redis事务是原子的。
Redis不支持回滚
Redis命令在事务中可能会执行失败,但是Redis事务不会回滚,而是继续会执行余下的命令。
— The end —