我在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]
。我应该以不同的方式对其进行建模以实现相同的目标吗?
答案 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"
但是您必须确保应用程序代码中已排序集和散列的一致性。