2015-12-03 51 views
0

这里是什么,我想我的数据结构,看起来像一个例子:为了从注册游戏服务器我将如何去构建Redis中的这些数据?

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

我用Java实现的RedisJedis)来缓存数据。代理服务器将所有注册的游戏服务器连接在一起,但代理服务器无法中继此类数据。因此,我已经采用了Redis的方法,并将其集成到所有游戏服务器共享的核心插件中。 lobby服务器将能够从Redis访问数据以向玩家显示实时游戏统计数据。我将如何去构建这个?我对Redis相当陌生,搜索小时数也没有帮助。请简单说明一下。 我希望能够通过方法调用来获取特定游戏的数据,并遍历Redis数据库中的所有缓存游戏。 (例如游戏:{ “game_1”, “game_2”})

回答

2

一种方式去了解这将是:在哈希

  1. Store中的游戏 - 每场比赛的哈希值。哈希键的名字应该是你游戏的标识符,其中的fields-> values应该与你游戏的属性相对应。在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。 Pro:不需要额外的维护,con:可能会变慢。

    b。维护一套包含你的游戏标识符(键名)的组件 - 获取所有游戏,获取该组的内容,并为其每个成员在步骤3中使用API​​。Pro:获取所有游戏的更好性能,con:需要维护另一个数据结构(Set)。

相关问题