假设我有多个排序集:
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
这就是我想要的结果。哪个zset包含最高值的密钥对。那这对钥匙是什么?
Results
-------
zset2:D:2750
zset1:D:555
zset3:D:333
zset1:B:22
...
我研究了使用zinterstore,但它似乎无法在多个zset中获得最高的100分。如果重要的话,我有成百上千个zsets。
最佳答案
似乎您不应该期望像查询一样实现此功能,但是在更新排序集时应该存储此数据。
无论何时向排序集添加或移除项,都需要更新排序集的顶部项添加、更新或删除元素。
例如,当您在A
中添加元素zset1
时,您应该添加到results
已排序的集合中,并使用相应的分数设置元素zset1:A
。等等。
在redis和大多数nosql解决方案中,您应该考虑实时创建索引的方法,而不是像在关系数据库中那样,在关系数据库中抛出数据并使用复杂的sql查询,实际上可以实现任何需求。