2014-01-27 111 views
0

我想建立一個通知系統。 他們會是這個樣子:查詢:redis或mongodb?

{user_id: 1, type: 'comment', content: [msg: 'bluhbluh', date: '2014-01-01']} 
{user_id: 1, type: 'message', content: [msg: 'blahblah', date: '2014-01-01']} 

我需要對USER_ID和類型的查詢。我知道這很容易與mongoDB兼容。從我在互聯網上發現的情況來看,Redis並不是那麼容易,因爲它只適用於鍵/值。

你知道是否有辦法通過Redis實現這一點,並且如果它的性能比mongoDB更好。

謝謝

回答

1

通常更容易使用發佈 - 訂閱架構建立一個通知系統,你必須對如何做到這一點有很多選擇。一個快速而簡單的選項是使用zeromq pub-sub pattern,當然你有很多其他的選擇。

現在redis vs mongodb將主要取決於您希望數據的持久性以及查找引擎的複雜程度。如果通知大部分存儲在內存中並且消耗得足夠快,那麼redis是一個很好的解決方案。您可以通過構造連接的鍵(例如:type.user_id)並在有序集上進行某種類型的前綴搜索來解決鍵值限制問題。如果您希望數據持久且預計未來複雜的查詢模型,Mongodb會更好。

+0

謝謝你的回答。當我說通知時,我可能沒有使用正確的術語。我不是在談論電話通知,而是當你有新消息時,更像Facebook上的那些。我要去Redis! –

1

最好的解決方案將取決於隊列的填充方式,並與消息需要如何持久地沿着消耗。

Redis支持pub/sub,如果您要向工作人員推送notifcations,這可能很有用。這將使您無需一併查詢數據存儲區。

http://redis.io/topics/pubsub

爲職工情景另一種選擇是RabbitMQ的。這種方法可能會爲您節省一些時間來編寫隊列/工作人員基礎架構。

http://www.rabbitmq.com/

+0

謝謝你的回答! –