从具有非连续分数的有序集中检索值/成员

时间:2017-07-24 13:19:55

标签: redis

我有一个分数列表。使用这些,我需要从redis排序集中提取值。

我知道我可以使用zrangebyscore - 但是如果我提供的列表中的分数不是连续的怎么办?在这种情况下,我不能依赖zrangebyscore min max类型命令。

在这种情况下,从排序集中检索这些值的最有效方法是什么?我能做的最好就是在这里逐一检索。正确的吗?

这是一个示例(将有序集显示为元组列表):

list_of_scores = [4, 1, 3] # these are to be retrieved

sorted_set = [(item_1, 1),
              (item_2, 2),
              (item_3, 3),
              (item_4, 4)]

每个元组都是member, score对。

更新:这里有一个建议:

for score in scores:
    my_pipeline.zrangebyscore("my_sorted_set",score,score)
result = my_pipeline.execute()

1 个答案:

答案 0 :(得分:0)

一对一检索的问题是RTT太多了。您可以使用PIPELINE或将流程包装到Lua脚本中,以使逐个检索更有效。

此外,您似乎使用Sorted Set作为HASH,例如得分为哈希键,成员名称为哈希值。因此,HASH可能更适合您的场景。