同时使用redis和mongodb有意义吗?

同时使用redis和mongodb有意义吗?,mongodb,redis,Mongodb,Redis,我们有很多数据,决定使用mongodb,而且效果很好 我们开始使用redis跟踪实时应用程序中的活跃用户。我们还开始用redis做一些酒吧/子频道的事情 我们的下一步可能是将mongodb用于休眠数据,将redis用于活动数据。例如,我们的所有用户都存储在mongodb中,但当他们登录时,我们会将该数据的一个副本移动到redis以便快速访问。我们还将他们的游戏活动等内容存储在redis中,并相应地使用数据。当用户注销时,我们将在mongo中保存所需的任何内容,直到再次需要并加载到redis中 我

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

我们开始使用redis跟踪实时应用程序中的活跃用户。我们还开始用redis做一些酒吧/子频道的事情

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

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

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


谢谢

好的,那么有几个角度来讨论这个问题。首先要指出的是,redis确实有

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

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

  • 您可以使用该窗口并将其降低到100ms,但这将加重IO的负担
  • 您还可以将写入程序配置为等待日志刷新(WriteConcern:fsync),但这会显著降低写入速度
  • 有没有更好的方法来实现我们正在努力实现的目标

    这取决于你想要达到的目标

    • 您可以处理哪种类型的数据丢失
    • 你在用那个吗?这是否解决了您对数据丢失的大部分担忧
    • 你说你正在使用PubSub功能,这个功能覆盖了多少节点?您的数据是否因此得到了充分复制

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

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