redis ruby客户端学习(五)

一,redis是支持事务的,请看这篇介绍

下面介绍几个ruby实现的命令,multi,exec,discard,watch,unwatch。

1,multi:标记一个事务块开始,exec:执行所有 MULTI 之后发的命令

require 'Redis'
r = Redis.new
r.set 'a', 1
r.set 'b', 2

r.multi
r.set 'a', 3
r.set 'b', 6
r.exec

#r.get 'a'
#=> "3"
#r.get 'b'
# => "6"  

2,discard:丢弃所有 MULTI 之后发的命令

require 'Redis'
r = Redis.new
r.set 'a', 1
r.set 'b', 2

r.multi
r.set 'a', 3
r.set 'b', 6
r.discard
#r.get 'a'
#=> "1"
#r.get 'b'
# => "2"  

3,watch:锁定key直到执行了 MULTI/EXEC 命令

watch会检查时给定的key,如果从开始watch的时候,到执行exec的时候。所监视的key发生了变化,整个事务就会失败。

假设两个redis链接分别为r1和r2。

require 'Redis'
r1 = Redis.new
r1.set 'a', 1
r1.set 'b', 2

r1.multi
r1.set 'a', 3
r1.set 'b', 6
#r2中改变a的值后,执行exec
r1.exec
#r1.get 'a'
#=> "1"
#r1.get 'b'
# => "2"  
require 'Redis'
r = Redis.new
r.set 'a', 100

4,unwatch:

刷新一个事务中已被监视的所有key。重新开始watch

redis中事务和mysql中事务的区别

事务中出现错误时,整个事务中的操作是不会回滚的

posted @ 2015-01-11 16:25  范孝鹏  阅读(201)  评论(0编辑  收藏  举报