Redis ZCARD多键(redis-rb)

时间:2013-06-26 17:52:48

标签: ruby redis

是否可以在Redis中计算多个有序集?

我想要类似的东西:

redis.zcard(["YOLO", "YOLOSWAG"])

那应该返回YOLO和YOLOSWAG的数量。

2 个答案:

答案 0 :(得分:1)

命令文档并没有说它需要多个参数,所以它没有。

您可以根据需要管理尽可能多的ZCARD个请求,例如(原谅我糟糕的红宝石)

counts = redis.pipelined do
    ["YOLO", "YOLOSWAG"].each do |key|
       redis.zcard(key)
    end
end

答案 1 :(得分:0)

从问题中不清楚,但如果你要求两者都有一个计数,你实际上可以通过使用Lua来实现这一点,而不是流水线操作。想法是,你会做所有添加服务器端,所以不需要通过网络传回n个号码,你只需转移一个。如果你只有2个你想要基数的键,那不是什么大不了的事,但想想我还是会提到它。它就像(未经测试):

local total = 0
for i,k in ipairs(KEYS) do
    total = total + redis.call('ZCARD', k)
end
return total