node.js - 在同一台服务器上设置 MongoDB 和 Redis

标签 node.js mongodb architecture redis

目前,我使用 Node.js 和 MongoDB 设置了一个简单的 API 服务器,但希望开始合并 Redis 来缓存请求。在与 MongoDB 服务器相同的机器上设置 Redis 实例是一种不好的做法吗?如果我将来要扩展 MongoDB 服务器,是否需要注意任何 Redis 设置问题?

最佳答案

虽然Redis和MongoDB确实是一个很好的组合,但它们不应该安装在同一个 Node 上,特别是当MongoDB数据库无法容纳在内存中时。

MongoDB 利用操作系统的虚拟内存机制,即使在交换的情况下(由于内存局部性),其数据结构(btree)也将提供可靠的性能。如果 MongoDB 数据库大于内存,机器将进行交换,这是预期的行为。

另一方面,Redis 是一个单线程内存数据存储,其数据结构针对随机内存访问进行了调整。一切都必须符合内存。如果主机开始交换一些 Redis 内存,其性能将非常糟糕。

如果将两者放在同一主机上,MongoDB 将使机器交换,并且 Redis 将不再响应。解决该问题的一种方法是使用 cgroups(或类似的隔离机制)来防止 MongoDB 吃掉机器的内存,但这会使配置更加复杂。我不会推荐它。

关于node.js - 在同一台服务器上设置 MongoDB 和 Redis,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25343001/

相关文章:

node.js - MongoDb 全文搜索和条件

regex - 仅匹配字母数字字符

python - python如何表示这么大的整数?

javascript - 获取一个带有潜台词的图标,然后在同一行上获取一个列表?

javascript - 如何修复 Node 中的 'parsing error: Unexpected token =>'?

node.js - 如何将命令的执行导出到 upstart 脚本

codeigniter - MongoDB 文档中时间戳的最佳日期格式?

javascript - 如何在嵌入中调用 .username 属性? (不和谐.js)

使用移动应用程序进行 API 身份验证(通过 SMS)

session - 带有后端服务器的 IBM Worklight session 控制