以下是我希望数据结构如下所示的示例:
[games]:
[game_1]:
players: 10
maxPlayers: 24
state: "PLAYING"
currentMap: "Example Map"
[game_2]:
players: 0
maxPlayers: 24
state: "LOBBY"
currentMap: "None"
我正在使用Redis
(Jedis
)的Java实现来缓存已注册游戏服务器的数据。代理服务器将所有已注册的游戏服务器连接在一起,但是,代理不能中继这样的数据。因此,我采用Redis
方法并将其集成到核心插件中,该插件在所有游戏服务器中共享。 lobby
服务器将能够从Redis
访问数据,以向玩家显示实时游戏统计信息。我该如何构建这个?我对Redis
相当新,而且几个小时的搜索没有帮助。请用简单的方法解释一下。
我希望能够进行方法调用以获取特定游戏的数据,并遍历Redis
数据库中的所有缓存游戏。 (例如游戏:{“game_1
”,“game_2
”})
答案 0 :(得分:2)
解决这个问题的一种方法是:
将游戏存储在哈希中 - 每场比赛都有哈希值。哈希的密钥名称应该是您游戏的标识符,其中的fields->值应该与您游戏的属性相对应。在Redis术语中应该完成:
HMSET game_1 players 10 maxPlayers 24 state PLAYING currentMap "Example Map"
对游戏进行更新只需致电HSET game_1 players 11
即可触摸特定属性。
您可以分别使用HGET
,HMGET
和HGETALL
阅读特定游戏的属性,属性或所有属性。
可以通过以下两种方式之一完成所有游戏:
一个。使用SCAN
检索数据库中的密钥名称,并在每个密钥的步骤3中调用API。亲:没有额外的维护,con:可能会更慢。
湾维护一组由游戏标识符(键名)组成 - 用于获取所有游戏,获取该组的内容,并为其每个成员使用步骤3中的API。专业:获取所有游戏的性能更佳,con:需要维护另一个数据结构(Set)。