Redis发布/订阅与Node事件发射器的区别

4

我不确定我是否真正理解使用redis pub/sub和使用node/express的事件发射器之间的区别。pub/sub是否以任何方式与我的数据库交互?在什么情况下我会使用其中之一?

2个回答

15

Redis允许您构建快速和强大的进程间通信。Redis pub/sub使用您的Redis进程来传递消息,但它永远不会影响存储在Redis DB中的数据。

事件发射器仅在单个节点进程内工作。因此,即使您拥有单个节点集群,由一个工作进程发出的事件也不会对另一个进程可见。

因此,事件发射器是处理进程内通信的完美选择。但如果您需要进程间通信,则应使用Redis。


这是我想做的事情:http://stackoverflow.com/questions/15866568/redis-node-js-chaining-calls-to-get-user-data - Omid Ahourai

4
如果Redis是您的数据库,那么是的,发布/订阅与数据库交互(但不涉及存储的数据),因为Redis处理发布到订阅频道的执行。我不会说您必须使用其中之一。事件发射器将被Redis客户端用于向您的节点应用程序发出信号,说明Redis已发布消息。
要真正回答您的问题,这取决于您使用它们的目的。如果您只在一个服务器上运行一个节点实例,则事件发射器可以作为您的消息传递传输。
然而,如果您有多个节点实例或多个运行在多个服务器上的实例,则可以扩展事件发射器以将其消息发布到Redis,从而允许在其他服务器上运行的其他节点实例响应该事件。
另一个很好的用例是socket.io。如果您有一个使用套接字在房间之间广播的聊天室,如果您的聊天应用程序跨多个服务器分布,则需要利用Redis发布/订阅。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接