2013-04-07 45 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。