在Redis中相交排序集

时间:2012-01-07 21:46:57

标签: data-structures redis data-modeling

我在Redis中有一个包含如下值的值:

ZADD ranking1 0 Kyle Neath
ZADD ranking1 1 Cameron McEfee
ZADD ranking1 2 Ben Bliekamp
ZADD ranking1 3 Justin Palmer

ZADD ranking2 0 Cameron McEfee
ZADD ranking2 1 Justin Palmer
ZADD ranking2 2 Kyle Neath
ZADD ranking2 3 Ben Bliekamp

......等等。

有没有办法获取某个人的分数并以列表形式返回?例如,调用Kyle Neath将返回[0, 2]。我应该以不同的方式对其进行建模以实现相同的目标吗?

1 个答案:

答案 0 :(得分:3)

使用当前的数据布局,实现列表的唯一方法是每个排名使用一个zscore

除了这些排序集之外,每个人可以有一个哈希值,每个人在每个排名中的位置。内存使用率不会高很多,因为字符串被重用并且哈希值非常便宜。 例如:

HMSET "Kyle Neath" ranking1 0 ranking2 2
HMSET "Cameron McEfee" ranking1 1 ranking2 0
HMSET "Ben Bliekamp" ranking1 2 ranking2 3
HMSET "Justin Palmer" ranking1 3 ranking2 1

并获取列表

HVALS "Kyle Neath"

但是您必须确保应用程序代码中已排序集和散列的一致性。