Redis 事务可以一次执行多个命令, 并且带有以下两个重要的保证:
批量操作在发送 EXEC 命令前被放入队列缓存。
收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行。
在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中。
正常执行
redis>MULTI
OK
redis>SADD "user:1:following" 2
QUEUED
redis>SADD "user:2:followers" 1
QUEUED
redis>EXEC
1) (integer) 1
2) (integer) 1
一个事务从开始到执行会经历以下三个阶段:
开始事务。
命令入队。
执行事务。
语法错误
命令无法提交到队列,全部失败。
运行错误
1 3 执行成功 2执行失败,redis弱事务,不会回滚。
watch命令介绍
利用watch实现incr
WATCH mykey
val = GET mykey
val = val + 1
MULTI
SET mykey $val
EXEC
Redis Watch 命令用于监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断。
redis>SET key 1
OK
redis>WATCH key
OK
redis>SET key 2
OK
redis>MULTI
OK
redis>SET key 3
QUEUED
redis>EXEC
(nil)
redis>GET key
"2"
redis>SET key 1
OK
redis>WATCH key
OK
redis>MULTI
OK
redis>SET key 3
QUEUED
redis>EXEC
(nil)
redis>GET key
"3"
转载:http://blog.csdn.net/wgh1015398431/article/details/53156027