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中事务的区别
事务中出现错误时,整个事务中的操作是不会回滚的