2013-04-07 154 views

回答

6

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

事件发射器只能在单节点进程内工作。因此,即使您拥有单个节点群集,一个工作人员发出的事件也不会被另一个人看到。

因此,事件发射器是进程内通信的最佳选择。但是如果你需要进程间通信,你应该使用Redis。

+0

这就是我想要做的:http://stackoverflow.com/questions/15866568/redis-node-js-chaining-calls-to-get-user-data – 2013-04-07 19:06:31

2

如果Redis是您的数据库,则发布/订阅是与数据库交互(但不是存储的数据),因为它是处理发布到订阅通道的执行的Redis。我不一定会说你会用另一种。 Redis客户端将使用事件发送器向您的节点应用程序发送Redis已发布消息的信号。

要真正回答你的问题,这取决于你使用的是什么。如果您只有一个节点实例在一台服务器上运行,那么事件发射器可能会作为您的消息传递传输。但是,如果您有多个节点实例或运行在多个服务器上的多个实例,则可以扩展事件发射器以将其消息发布到Redis,从而允许其他服务器上运行的其他节点实例响应该事件。

另一个很好的用例是socket.io。如果您说使用套接字在聊天室之间进行广播的聊天室,那么如果您的聊天应用程序分布在多个服务器上,则需要利用Redis pub/sub。