最近,我使用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"
答案 0 :(得分:1)
当排序集的成员具有相同的分数时,它们按字典顺序排序。没有简单的方法让他们以不同的方式订购AFAIK,但您可以轻松地在客户端进行排序。或者,您可以编写一个简短的Lua脚本,在服务器上为您执行此操作。
有一种轻微的hackish方式,你可以摆脱你想要的东西,而不采取上述方法。根据您提供的示例和ssuming,排名和用户ID都是整数,您可以使用两者的组合,如下所示:
zadd game_rank 550006435 6435
zadd game_rank 556088561 6088561
zadd game_rank 550608825 608825
这样您就可以使用和范围对每个等级进行“数字”排序(即使用zrangebyscore game_rank 550000000 559999999
)。