【问题标题】:Storing game profiles for high scores / leaderboards in Redis在 Redis 中存储高分/排行榜的游戏配置文件
【发布时间】:2017-02-19 15:36:15
【问题描述】:

嘿,我目前正在开发一款拥有超过 100 万用户的游戏,我已经有一段时间使用 MySQL 按击杀数/死亡数/连续击杀数等对玩家进行排名,但是执行所有这些 SQL 调用并没有看起来不太好,所以我开始玩 Redis。

所以这是我想到的选项。

例如,使用 ZADD 存储所有数据,然后全部抓取并使用 ZRANGE 和 ZRANK 查找排名

put player_kills player1 100
put player_deaths player_2 200

但是我遇到的问题是,例如,如果我只想检查超过 10 次击杀的玩家怎么办?我应该开始将用户数据存储在哈希中并从那里排序吗?如果您有任何我可以使用的示例或想法,请告诉我。

【问题讨论】:

    标签: redis


    【解决方案1】:

    要使用 Sorted Set 数据结构,您需要调用 Redis 的ZADD command 如下(不是分数在成员之前):

    ZADD player_kills 100 player1
    

    记录完所有杀戮后,您可以使用ZRANGEBYSCORE command 进行查询,根据您的情况:

    ZRANGEBYSCORE player_kills 10 +inf
    

    【讨论】:

      【解决方案2】:

      如果您只想要超过 10 次击杀的玩家,只需使用 zrangebyscore,如下所示:

      ZRANGEBYSCORE player_kills 10 20
      

      【讨论】:

        猜你喜欢
        • 2016-10-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-04
        相关资源
        最近更新 更多