目前,我使用 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/