提交 3ba37089 编写于 作者: A antirez

command postprocessing implemented into RubyRedis

上级 3f32f1f6
BEFORE REDIS 1.0.0-rc1
* S*STORE should allow as dest key one of the source keys
* Warning if using default config, with hint about 'redis-server redis.conf'
* Add number of keys for every DB in INFO
* maxmemory support
......
......@@ -14,6 +14,35 @@ class RedisClient
"echo"=>true, "getset"=>true, "smove"=>true
}
ConvertToBool = lambda{|r| r == 0 ? false : r}
ReplyProcessor = {
"exists" => ConvertToBool,
"sismember"=> ConvertToBool,
"sadd"=> ConvertToBool,
"srem"=> ConvertToBool,
"smove"=> ConvertToBool,
"move"=> ConvertToBool,
"setnx"=> ConvertToBool,
"del"=> ConvertToBool,
"renamenx"=> ConvertToBool,
"expire"=> ConvertToBool,
"keys" => lambda{|r| r.split(" ")},
"info" => lambda{|r|
info = {}
r.each_line {|kv|
k,v = kv.split(':', 2)
k,v = k.chomp, v = v.chomp
info[k.to_sym] = v
}
info
}
}
def convert_to_bool(r)
r == 0 ? false : r
end
def initialize(opts={})
opts = {:host => 'localhost', :port => '6379', :db => 0}.merge(opts)
@host = opts[:host]
......@@ -52,12 +81,15 @@ class RedisClient
bulk = nil
argv[0] = argv[0].to_s.downcase
if BulkCommands[argv[0]]
bulk = argv[-1]
bulk = argv[-1].to_s
argv[-1] = bulk.length
end
@sock.write(argv.join(" ")+"\r\n")
@sock.write(bulk+"\r\n") if bulk
read_reply
# Post process the reply if needed
processor = ReplyProcessor[argv[0]]
processor ? processor.call(read_reply) : read_reply
end
def select(*args)
......
......@@ -2973,7 +2973,7 @@ static void sinterGenericCommand(redisClient *c, robj **setskeys, int setsnum, r
robj *lenobj = NULL, *dstset = NULL;
int j, cardinality = 0;
if (!dv) oom("sinterCommand");
if (!dv) oom("sinterGenericCommand");
for (j = 0; j < setsnum; j++) {
robj *setobj;
......@@ -3151,7 +3151,6 @@ static void sunionDiffGenericCommand(redisClient *c, robj **setskeys, int setsnu
deleteKey(c->db,dstkey);
dictAdd(c->db->dict,dstkey,dstset);
incrRefCount(dstkey);
server.dirty++;
}
/* Cleanup */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册