我将如何在Redis中构建此数据?

时间:2015-12-03 06:46:13

标签: data-structures redis

以下是我希望数据结构如下所示的示例:

[games]:
   [game_1]:
       players: 10
       maxPlayers: 24
       state: "PLAYING"
       currentMap: "Example Map"
   [game_2]:
       players: 0
       maxPlayers: 24
       state: "LOBBY"
       currentMap: "None"

我正在使用RedisJedis)的Java实现来缓存已注册游戏服务器的数据。代理服务器将所有已注册的游戏服务器连接在一起,但是,代理不能中继这样的数据。因此,我采用Redis方法并将其集成到核心插件中,该插件在所有游戏服务器中共享。 lobby服务器将能够从Redis访问数据,以向玩家显示实时游戏统计信息。我该如何构建这个?我对Redis相当新,而且几个小时的搜索没有帮助。请用简单的方法解释一下。 我希望能够进行方法调用以获取特定游戏的数据,并遍历Redis数据库中的所有缓存游戏。 (例如游戏:{“game_1”,“game_2”})

1 个答案:

答案 0 :(得分:2)

解决这个问题的一种方法是:

  1. 将游戏存储在哈希中 - 每场比赛都有哈希值。哈希的密钥名称应该是您游戏的标识符,其中的fields->值应该与您游戏的属性相对应。在Redis术语中应该完成:

    HMSET game_1 players 10 maxPlayers 24 state PLAYING currentMap "Example Map"

  2. 对游戏进行更新只需致电HSET game_1 players 11即可触摸特定属性。

  3. 您可以分别使用HGETHMGETHGETALL阅读特定游戏的属性,属性或所有属性。

  4. 可以通过以下两种方式之一完成所有游戏:

    一个。使用SCAN检索数据库中的密钥名称,并在每个密钥的步骤3中调用API。亲:没有额外的维护,con:可能会更慢。

    湾维护一组由游戏标识符(键名)组成 - 用于获取所有游戏,获取该组的内容,并为其每个成员使用步骤3中的API。专业:获取所有游戏的性能更佳,con:需要维护另一个数据结构(Set)。