最近,我使用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 脚本,在服务器上为您执行此操作。
有一种稍微有点黑客的方法,您可以不用求助于上述方法就可以得到您想要的东西。根据您提供的示例并假设排名和用户 ID 都是整数,您可以使用两者组合的分数,如下所示:
zadd game_rank 550006435 6435
zadd game_rank 556088561 6088561
zadd game_rank 550608825 608825
这将让你做范围and您将获得每个排名的“数字”排序(即zrangebyscore game_rank 550000000 559999999
).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)