【问题标题】:Does it make sense to use both redis and mongodb?同时使用redis和mongodb有意义吗?
【发布时间】:2011-07-26 05:08:57
【问题描述】:

我们有很多数据,决定使用 mongodb,效果很好。

我们开始使用 redis 来跟踪我们实时应用中的活跃用户。我们还开始用 redis 做一些发布/订阅频道的东西。

我们的下一步可能是使用 mongodb 处理休眠数据,使用 redis 处理活动数据。一个例子是,我们所有的用户都存储在 mongodb 中,但是当他们登录时,我们会将这些数据的副本移动到 redis 以便快速访问。我们还将他们的游戏活动等内容存储在 redis 中,并相应地使用这些数据。当用户注销时,我们会将任何需要的东西保存在 mongo 中,直到再次需要它并加载到 redis 中。

我们一直在研究的一件事是在崩溃时保留 redis。系统上的用户活动是我们不希望在崩溃时丢失的有意义的数据,如果我们只是在事后记录数据,我们是否应该在每次事件后在 mongo 中保存重要数据的备份?那么在 crash redis 可以从 mongo 恢复吗?

有没有更好的方法来实现我们正在努力实现的目标?

谢谢!

【问题讨论】:

  • MongoDb 的数据存储前没有缓存系统,具有高读/写吗?为什么需要 redis?
  • 这是我们希望弄清楚并获得一些深入信息的东西类型。我们对这两种数据存储都是新手,希望能得到一些答案来解释我们应该采取哪些不同的做法以及原因。

标签: mongodb redis


【解决方案1】:

好的,所以有几个角度可以解决这个问题。首先要指出的是redis确实有user-configurable persistence

系统上的用户活动是我们不希望在崩溃时丢失的有意义的数据,如果我们只是在事后记录数据,我们是否应该在每次事件后在 mongo 中保存重要数据的备份?

公平地说,MongoDB 的默认设置是每 60 秒刷新一次磁盘。因此,您仍有 60 秒的数据丢失窗口。

  1. 您可以使用journaling 并将该窗口降低到 100 毫秒,但这会对 IO 造成更大的负担。
  2. 您还可以将写入程序配置为等待该日志刷新 (WriteConcern: fsync),但这会显着减慢写入速度。

有没有更好的方法来实现我们正在努力实现的目标?

真的取决于您要达到的目标。

  • 您可以处理哪些类型的数据丢失?
  • Redis has replication,你在用吗?这是否解决了您的大部分数据丢失问题?
  • 您说您正在使用 PubSub 功能,这涵盖了多少个节点?您的数据是否因此得到充分复制?

不管怎样,这都是一个有点复杂的问题。 MongoDB 可能会解决您的问题,但复制也可以解决这些问题。取决于您的舒适程度。

【讨论】:

    猜你喜欢
    • 2011-10-17
    • 2012-05-28
    • 1970-01-01
    • 1970-01-01
    • 2011-07-20
    • 2012-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多