使用MongoDB和Redis配合使用?

3
我们开始使用Redis存储活跃数据、已登录用户等,也使用一些pubsub来传递实时数据。
最近,我们添加了Mongo以满足地理空间需求,对于非活跃数据来说,它似乎也很好用。
这两者应该如何协同工作?同时使用是否愚蠢?当数据变为活跃状态时,从Mongo传输数据块到Redis是否愚蠢?
我们的想法是,我们可以将所有东西都存储在Mongo中,但是当用户处于活跃状态并且数据可能被访问时,从Mongo传输用户数据到Redis。我知道Mongo自己也有一些缓存机制,我们对它们都是新手,只是想知道它们应该如何协同使用,如果有的话。
谢谢!
1个回答

5
“同时使用两者是愚蠢的吗?当MongoDB变得活跃时,从MongoDB传递数据块到Redis是愚蠢的吗?”
所以我觉得实际上有一个合理的测试和验证这个问题的方法。Redis基本上是一个“内存”数据库,那么如果将RAM提供给MongoDB,可以做得更好吗?
历史上,我们使用Memcache/MySQL组合来基本上“添加RAM”到MySQL,并限制它需要做的写入量。我们之所以这样做,只是因为分片MySQL很复杂。
然而,MongoDB提供了一种分片机制。因此,您可以通过添加更多的分片来“添加RAM”到问题中(以及“添加磁盘”)。
由于内存映射文件的工作方式,MongoDB倾向于在内存中保留最近使用的数据。因此,如果您将最近的数据拉入Redis,那么该数据可能也在MongoDB端的内存中,因此不清楚将其放在两个地方是否有利。
“同时使用两者是愚蠢的吗?当MongoDB变得活跃时,从MongoDB传递数据块到Redis是愚蠢的吗?” 这很难说,需要进行测试和分析。MongoDB实际上没有发布/订阅机制,但它 tend to have fast query times,因此在特定位置可能是合适的。

是的,我们喜欢它们两个,因为它们各有不同的优点,并且在我们使用它们时表现出色。我们可能会继续使用它们两个。我们只需要找出它们智能交叉的地方。感谢您的见解! - fancy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接