gpt4 book ai didi

Redis 排序集 : How to get values in numerical order rather than alphabetical order when two values has the same score?

转载 作者:IT王子 更新时间:2023-10-29 06:06:46 28 4
gpt4 key购买 nike

最近,我正在使用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"

最佳答案

当一个排序集的成员具有相同的分数时,它们将按字典顺序排序。没有直接的方法让它们以不同的方式排序 AFAIK,但您可以轻松地在客户端进行排序。或者,您可以编写一个简短的 Lua 脚本,在服务器上为您执行此操作。

有一种稍微老套的方法,您可以在不借助上述方法的情况下获得想要的结果。根据您提供的示例并假设排名和用户 ID 都是整数,您可以使用两者组合的分数,如下所示:

zadd game_rank 550006435 6435
zadd game_rank 556088561 6088561
zadd game_rank 550608825 608825

这将允许您进行范围并且您将对每个等级进行“数字”排序(即使用zrangebyscore game_rank 550000000 559999999)。

关于Redis 排序集 : How to get values in numerical order rather than alphabetical order when two values has the same score?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26227796/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com