最近,我正在使用redis SortedSet为每个用户实现游戏等级,但是我遇到了一个问题:
zadd game_rank 55 6435 zadd game_rank 55 6088561 zadd game_rank 55 608825 zrange game_rank 0 -1
结果是:
"60882561" "608852" "6435"
我想知道在相同分数中是否可以按数字顺序获取值:
"6435" "608852" "60882561"
当已排序集合的成员具有相同分数时,将按字典顺序对其进行排序。没有直接的方法可以使它们以不同的顺序排列,但您可以轻松地在客户端进行排序。或者,您可以编写一个简短的Lua脚本,在服务器上为您完成此任务。
您可以采用一种有点怪异的方式来摆脱想要的东西,而无需采用上述方法。根据您提供的示例,并假设rank和user id都是整数,则可以使用将两者结合在一起的得分,如下所示:
zadd game_rank 550006435 6435 zadd game_rank 556088561 6088561 zadd game_rank 550608825 608825
这将使您可以进行范围调整, 并且 可以对每个等级进行“数字”排序(即,使用zrangebyscore game_rank 550000000 559999999)。
zrangebyscore game_rank 550000000 559999999