在Redis中,如何在多个排序集中获得最高分?

时间:2015-09-16 10:04:09

标签: redis

假设我有多个有序集:

 zset1
 zset2
 zset3

以下是所有集合的数据:

zset1
-----
A:1
B:22
C:4
D:555

zset2
-----
N:14
O:15
P:16
D:2750

zset3
-----
D:333
Y:0
Z:1

这是我想要的结果。哪些zsets包含最高值的密钥对。这些关键对是什么?

Results
-------
zset2:D:2750
zset1:D:555
zset3:D:333
zset1:B:22
...

我研究过使用ZINTERSTORE,但它似乎无法说出多个zset中排名前100的最高分。如果重要的话,我有数百甚至数千个zset。

1 个答案:

答案 0 :(得分:1)

您似乎不应该期望将其视为查询,但是在更新已排序的集合时应该存储此数据。

无论何时向排序集添加或删除项目,都需要更新顶级项目排序集添加,更新或删除元素。

例如,当您在A中添加元素zset1时,您应该将results排序集添加到元素zset1:A及其相应的分数。等等。

在Redis和大多数NoSQL解决方案中,您应该认为您的方法是实时创建索引而不是像关系数据库一样,在这种关系数据库中,您可以抛出数据并使用复杂的SQL查询来实现任何要求。