c# - 缓存对于 MongoDB 和 MySQL 一样重要吗?

标签 c# optimization mongodb caching

我正在为我的网络游戏编写一个 C# HTTP 请求服务器,我正在使用 MongoDB 作为数据库。在 C# 应用程序中仍然缓存我可以缓存的内容是否更有效?或者对每件事都向 MongoDB 发出请求会更快吗?我预计每个活跃玩家每分钟大约有十几个选择查询,并且可能每分钟有一个或两个保存/更新查询。

最佳答案

“每位活跃玩家每分钟进行十多次选择查询”并没有告诉我们任何信息。为了使它有任何意义,我们需要知道活跃玩家的数量、每个查询所花费的时间、表结构、正在使用的查询(包括返回的数据量)、服务器负载统计信息以及其他类似信息比如你是否在使用 Mongo 的数据库分片能力等。

无论如何,在设置任何类型的缓存之前,我强烈建议您从分析系统开始。你需要知道你的瓶颈在哪里,如果有的话。这不是您只是猜测的事情,您需要可靠而真实的统计数据。

有了这些信息,您就可以决定是否需要

  • 对您的代码进行小的修正
  • 实现某种类型的缓存策略
  • 将数据库服务器分片到多个服务器上
  • 重新设计大量代码
  • 扩大规模(购买更大的服务器)
  • 甚至修复内部网络问题。

要点是,不要为了以后获得性能提升而开始缓存内容。取决于大量因素,缓存可能会提高性能,也可能会降低性能。


这里要补充一点。如果您使用网络农场来托管您的请求服务器,那么将数据本地缓存到每个独立的网络服务器所涉及的复杂性和硬件成本会急剧增加。

当您试图将数据缓存在这些机器的内存中时,由于您的网络服务器内存需求增加,硬件成本会上升。

尝试使缓存的副本保持同步以免它们过时会增加复杂性。我想游戏会需要 100% 最新的信息。像 facebook 和其他网站这样的网站可能会有点不同步。当游戏服务器不同步时,可能会对玩家的可用性产生负面影响。

假设您目前只部署到一个网络服务器和一个数据库服务器,现在添加缓存功能可能会给您带来巨大的痛苦,如果您移动到多个网络服务器并且/或多个数据库服务器。

最后,如果由于某种原因你只部署到一台同时托管数据库和网络服务器的机器上,那么缓存是完全荒谬的。

关于c# - 缓存对于 MongoDB 和 MySQL 一样重要吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6554823/

相关文章:

c# - 如何用 XDT 转换替换字符串

mysql - 我应该如何在 MySQL 中组织电影的歌曲下载链接?

c# - 在 C# 中使用嵌套对象渲染 MongoDB 更新文档

javascript - 在 Node JS 中缓冲流中的数据以执行批量插入

c# - 当我在 .net 框架中将源代码编译为 exe 文件时会发生什么

c# - 如何设置ComponentArt datagrid添加bootstrap Grid系统datagrid?

c# - 如何从 SortedDictionary 中获取最接近我的键的项目?

r - 从该数据帧中的每个记录时间戳计算一秒窗口中出现多少数据帧记录时间戳的优化

optimization - 使用 OpenAL,设置 AL_PITCH 和 AL_GAIN 是否昂贵?

node.js - 如何在 nodeJs 服务器上正确使用 Forest Admin? (与森林 express Mongoose )