获取具有给定前缀的所有有序集的大小

时间:2015-08-31 23:45:12

标签: redis

我在Redis中得到了几个带有公共前缀(itemmovements:)的排序集。

我知道我们可以使用ZCOUNT来获取单个(有序集)键的项目数量,如下所示:

127.0.0.1:6379> zcount itemmovements:8 0 1000000000
(integer) 23

(我能够这样做,因为我知道项目分数的范围。)

如何在循环中为所有以itemmovements:为前缀的键?

运行此操作

How to atomically delete keys matching a pattern using Redis获取提示我尝试了这个:

127.0.0.1:6379> EVAL "return redis.call('zcount', unpack(redis.call('keys', ARGV[1])), 0, 1000000000)" 0 itemmovements:*
(integer) 150

但是你可以看到它只返回一个数字(恰好是itemmovements:0的大小,keys返回的第一个值。)

1 个答案:

答案 0 :(得分:0)

我意识到我不明白EVAL中的lua代码在做什么。下面的代码工作正常:

eval "local a = {}; for _,k in ipairs(redis.call('keys', 'itemmovements:*')) do table.insert(a, k); table.insert(a, redis.call('zcount', k, 0, 1000000000)); end; return a" 0