2011-08-01 76 views
3

我們從Redis開始,存儲活動數據,登錄用戶等。我們也使用一些pubsub來實時傳輸數據。一起使用MongoDB和Redis?

最近我們添加了Mongo來適應我們的地理空間需求,而且它對於非活動數據來說似乎也很棒。

這兩者應該如何協同工作?使用兩者都是愚蠢的?當它們變爲活動時,將大塊數據從mongo傳遞到redis是否愚蠢?

我們的想法是,我們可能將所有內容都存儲在mongo中,但是當用戶處於活動狀態並且數據可能被訪問時,將用戶數據從mongo傳遞到redis。我知道Mongo自己做了這樣的緩存,我們對他們都是新手,只是想知道如何一起使用它們。

謝謝!

回答

5

同時使用這兩個是愚蠢的?當它們變爲活動時,將大塊數據從mongo傳遞到redis是否愚蠢?

所以我覺得實際上有一個合法的測試和驗證這個問題。 Redis基本上是一個「內存」數據庫,因此將內存給Mongo可以做多少好處?

從歷史上看,我們使用Memcache/MySQL組合來基本上爲MySQL添加「內存」,並限制了它需要執行的寫入數量。我們這樣做只是因爲分割MySQL很複雜。

但是,MongoDB提供了一個分片機制。所以你可以簡單地通過添加更多的碎片來「添加RAM」到一個問題(以及「添加磁盤」)。

由於內存映射文件的工作方式,MongoDB往往會將最近使用的數據保留在內存中。因此,如果您將最近的數據提取到Redis中,那麼這些數據可能也在MongoDB一側的內存中,所以目前還不清楚您是否從兩個位置獲得了這些數據。

它是愚蠢的......

這很難沒有一些測試和分析說。 MongoDB並沒有真正的pub/sub機制,但它確實有快速的查詢時間,所以它可能適用於特定的地方。

+0

是的,我們喜歡他們兩個人出於不同的原因,他們正在爲我們使用他們的工作。我們可能會繼續使用兩者。我們只需要弄清楚他們智能地跨越路徑的位置。感謝您的洞察! – fancy