一起使用MongoDB和Redis?

时间:2011-08-01 01:39:31

标签: mongodb redis

我们从Redis开始,存储活动数据,登录用户等。我们也使用一些pubsub进行实时数据传递。

最近我们添加了Mongo以满足我们的地理空间需求,对于非活动数据来说似乎也很棒。

这两者如何协同工作?使用两者都很愚蠢吗?当它们变为活动状态时,将数据块从mongo传递到redis是否愚蠢?

我们的想法是,我们可能会将所有内容存储在mongo中,但是当用户处于活动状态并且可能会访问数据时,会将用户数据从mongo传递到redis。我知道Mongo自己做了一些像这样的缓存,我们对它们都很陌生,只是想知道它们应该如何一起使用,如果有的话。

谢谢!

1 个答案:

答案 0 :(得分:5)

  

使用两者都很愚蠢吗?当它们变为活动状态时,将数据块从mongo传递给redis是不是很蠢?

所以我觉得测试和验证这个问题实际上是合法的。 Redis基本上是一个“内存中”的数据库,所以你可以通过将内存提供给Mongo来做得更好吗?

从历史上看,我们已经使用Memcache / MySQL组合来基本上“添加RAM”到MySQL并限制它需要写的数量。我们这样做只是因为对MySQL进行分片很复杂。

但是,MongoDB提供了一种分片机制。因此,您可以通过添加更多分片来“添加RAM”以解决问题(以及“添加磁盘”)。

由于内存映射文件的工作方式,MongoDB倾向于将最近使用的数据保存在内存中。因此,如果您将最近的数据提取到Redis中,那么该数据可能也存在于MongoDB端的内存中,因此不清楚您是否可以从两个地方获得数据。

  

愚蠢......

没有一些测试和分析,这很难说。 MongoDB实际上没有pub / sub机制,但它确实具有快速的查询时间,因此它可能适用于特定的位置。