假设我有多个有序集:
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。
答案 0 :(得分:1)
您似乎不应该期望将其视为查询,但是在更新已排序的集合时应该存储此数据。
无论何时向排序集添加或删除项目,都需要更新顶级项目排序集添加,更新或删除元素。
例如,当您在A
中添加元素zset1
时,您应该将results
排序集添加到元素zset1:A
及其相应的分数。等等。
在Redis和大多数NoSQL解决方案中,您应该认为您的方法是实时创建索引而不是像关系数据库一样,在这种关系数据库中,您可以抛出数据并使用复杂的SQL查询来实现任何要求。