我有一个socket.io服务器,它支持多人浏览器游戏。正在进行的单独匹配存储在服务器端内存中的单个对象中:
const matches = {};
当玩家创建一个匹配时,我会为这个对象添加一个新的唯一键,用于跟踪关于特定游戏的信息。所以当玩家移动时,我会这样做(例如简化代码):
matches[uniqueKeyForMatch] = newValidatedMatchState;
--在哪里 newValidatedMatchState
是描述此特定匹配的大型数据树。“在本例中,它的各种子字典和子数组包含数百个单独的数字、布尔和字符串数据。大约200-800个单独的数据块,如 5
或 "some text"
,每场比赛。
我想知道的是,如果我有100个并发匹配,那么 matches
对象可以有效地存储那么多数据吗?从这个问题上,我看到了一些限制,但我不确定除了有两个变量,比如 matches1
及 matches2
并在它们之间分割数据。有没有更有效的方法?
1条答案
按热度按时间3htmauhk1#
正如在另一个问题中提到的,这不是一个真正的问题。实际上,在达到任何其他类型的限制之前,您都会耗尽内存。不过,存储几百/千个匹配项听起来并不是什么问题。
如果您的匹配是一种更持久的数据,您希望存储更长的时间,那么您应该开始将匹配存储在文件或数据库中。
如果将其存储在数据库中不适合您的需要,或者您的应用程序的流量太大,数据库无法跟上,请拆分您的应用程序。有多个游戏服务器。你的“主服务器”只会告诉用户“你的游戏在
<server1>
".此外,您可能会发现map很有趣,它是一个比常规js对象更好的键值存储对象。