我想建立一个通知系统。 它们看起来像这样:
{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更好的性能。
谢谢
答案 0 :(得分:1)
最佳解决方案将取决于队列的填充和消耗方式以及消息的持久性。
Redis支持pub / sub,如果你将通知推送给工人,这可能很有用。这将使您无需全部查询数据存储区。
工作者场景的另一个选择是rabbitmq。这种方法可以节省您编写队列/工作者基础设施的时间。
答案 1 :(得分:1)
通常,使用pub-sub体系结构设置通知系统会更容易,您可以选择多种方式。一个快速而简单的选择是使用zeromq pub-sub pattern,当然您还有很多其他选择。
现在,redis vs mongodb主要取决于您希望数据的持久程度以及您要查找的查询引擎的复杂程度。如果通知主要存储在内存中并且消耗得足够快,那么redis是一个很好的解决方案。您可以通过构造连接键(例如:type.user_id)并对已排序的集进行某种前缀搜索来解决键值限制问题。如果你希望数据是持久的并且希望将来能够使用复杂的查询模型,那么Mongodb会更好。