当前位置: 首页 > 面试题库 >

Redis排行榜的独特得分

那正初
2023-03-14
问题内容

我正在使用Redis创建排行榜,并试图找到一种方法来与获得相同高分的玩家打交道(具有相同高分的玩家应按先获得该高分的顺序排序)

我曾想过要做以下事情…

zadd leaderboard highscore.timestamp player_id.attempt_number

但是,当我执行zrevrange时,时间戳显然将以错误的顺序排列。

输入示例:

zadd leaderboard 20.123 5.1
zadd leaderboard 20.125 5.2
zadd leaderboard 20.012 5.3
zadd leaderboard 21.024 5.4

输出:

zrevrange leaderboard 0 -1
5.4
5.2
5.1
5.3

所需的输出:

5.4
5.3
5.1
5.2

问题答案:

一种选择是做zadd leaderboard highscore.(Long.MAX_VALUE - timestamp) player_id.attempt_number(将Long.MAX_VALUE更改为时间戳的合理的最高可能值-
一个带符号的64位int将存储大约3亿年的毫秒,因此可能不需要)

编辑:不要忘了添加前导零:)



 类似资料:
  • 获取全站粉丝排行 获取财富达人排行 获取全站收入排行 获取全站粉丝排行 根据全站的用户粉丝数进行的排序 GET /ranks/followers 传入参数 名称 类型 必填 说明 limit int - 数据返回条数 默认10条 offset int - 偏移量 默认为0 响应 Http Status 200 Ok [ { "id": 1, "name": "baishi"

  • 获取资讯排行 获取资讯排行 根据一定时间内的资讯获得的浏览量量进行的排序 GET /news/ranks 传入参数 名称 类型 必填 说明 limit int - 数据返回条数 默认10条 type string - 筛选类型 day - 日排行 week - 周排行 month - 月排行 offset int - 偏移量 默认为0 响应 Http Status 200 Ok [ {

  • 获取解答排行 获取问答达人排行 获取社区专家排行 获取解答排行 根据一定时间内发布的回答数进行的排序 GET /question-ranks/answers 传入参数 名称 类型 必填 说明 limit int - 数据返回条数 默认10条 type string - 筛选类型 day - 日排行 week - 周排行 month - 月排行 offset int - 偏移量 默认为0 响应 H

  • 获取动态排行 获取动态排行 根据一定时间内的动态获得的点赞量进行的排序 GET /feeds/ranks 传入参数 名称 类型 必填 说明 limit int - 数据返回条数 默认10条 type string - 筛选类型 day - 日排行 week - 周排行 month - 月排行 offset int - 偏移量 默认为0 响应 Http Status 200 Ok [ {

  • 问题内容: 我正在使用Redis和排序集来创建游戏排行榜,并且已经设法使基本版本正常运行。我想知道是否可以进一步过滤类别?例如,假设我正在全球范围内跟踪用户的分数,并且每个用户都有一个国家/地区字段来指定他们来自何处。 是否可以在我要从特定国家(而不是整个数据库)中抽取前10名用户的地方进行过滤? 问题答案: 是的,这是可能的,但是这样做会增加应用程序层的复杂性和数据级别的存储。由于是键/值存储库

  • 如果反盗版为你的游戏打开,游戏服务检查用户是否被授权玩你的游戏。如果一个设备上的用户帐户没有为您的游戏授权,则由您的游戏发送的游戏服务调用将失败,并返回LICENSE_CHECK_FAILED状态代码。 要获得游戏许可,用户必须从Google Play安装。 我只是一个普通的开发人员,还没有达到黑客的水平(可能永远不会):D。但我的推断是,要提高分数,你需要: null