redis 事务
redis的事务功能可由multi和watch命令来完成;watch keys 还可以检测多个keyredis > WATCH mm
OK
redis > MULTI
OK
redis > zadd mm 5 eeeeeeeeeeeeee
QUEUED
redis > zadd tt 5 55555555555555
QUEUED
# 此时在另外一个redis-cli窗口运行
zadd tt 6 66666666666666666
#然后再运行
redis > exec
1) (integer) 1
2) (integer) 1
运行结果是两条命令都成功的
如将watch mm 改为 watch mm tt
运行结果将是
(nil)
还有一种情况zrangebyscore key start stop withscores也会让watch/multi运行结果为(nil),此时无论watch的是mm还是tt都将得到(nil)
注:在2.4.15中无此问题
watch在redis事务中相当于CAS(check-and-set)的功能,因此redis操作事务只需在循环中运行watch到exec中的命令,直到成功为止。
页:
[1]