1

我正在尝试使用 Play 框架创建在线棋盘游戏。这是我的第一个这样的应用程序。为最终用户提供良好的响应时间很重要。让我们想象一个像垄断这样的游戏,其中多个用户玩游戏,购买不同的地点,在该地点建造房屋或酒店等。用户玩的每一个回合都会有一些特定于该用户的棋盘外观变化。例如,如果棋盘有 40 个位置,当用户 1 购买 location1 时,下一轮棋盘应该以他已购买 location1 的方式看待他。棋盘的视图对于不同的用户来说是不同的,因为他们玩游戏取决于他们所采取的行动类型。

所以问题是当游戏进行时我应该在哪里存储用户特定的数据而不影响每次检索棋盘数据的响应时间?如果是缓存,那么可以为每个用户放入缓存中的可接受数据限制是多少?

谢谢

4

1 回答 1

0

解决方案完全取决于您的环境。对于缓存,您需要指明策略和实现。

如果您的 Web 应用程序仅在一台服务器上运行,您的任务很容易,您可以使用进程内缓存并使用 .Net Cache(如果您使用 .Net)或可在大多数框架中使用的 memcache 来实现它。但是,如果您有多个服务器要共享和访问缓存数据,则需要使用进程外缓存,您可以使用 memcache 或任何其他缓存提供程序,它们可以让您从您的内存中访问内存缓存应用。

您将游戏模型存储在缓存中,并在玩家更改它时更新它。在这种方法中,您可以始终保持模型的状态并从缓存中读取它。

当您的应用程序依赖缓存时要小心,这可能会有风险,因为如果缓存不可用,那么整个游戏都会丢失。尝试将模型也保存在数据库中。您可以将游戏数据保存在数据库中,但在特定数量的操作后更新它,而不是每次操作都更新。

您还可以使用比 SQL 数据库快得多的 No-Sql 数据库(不比内存缓存快),并且与缓存相比更加持久。您可以将实时游戏数据存储在 No-sql 数据库中,并将其他数据保存在 sql 数据库中。所以你可以有一个混合解决方案。

于 2016-07-21T13:02:33.190 回答