我不确定我是否真正理解使用 redis pub/sub 和使用 node/express 事件发射器之间的区别。发布/订阅是否以任何方式与我的数据库交互?在什么情况下我会使用其中一种?
问问题
2538 次
2 回答
10
Redis 允许您构建快速而强大的进程间通信。Redis pub/sub 使用您的 Redis 进程来传递您的消息,但它不会影响存储在 Redis DB 中的数据。
事件发射器仅在单节点进程中工作。因此,即使您有一个单节点集群,一个工作人员发出的事件也不会对另一个工作人员可见。
因此,事件发射器是进程内通信的完美选择。但是如果你需要进程间通信,你应该使用Redis。
于 2013-04-07T18:33:21.713 回答
3
如果 Redis 是您的数据库,那么是的 pub/sub 与数据库交互(但不是存储的数据),因为它是 Redis 正在处理发布到订阅频道的执行。而且我不一定会说您会使用其中一个。redis 客户端将使用事件发射器向您的节点应用程序发出 Redis 已发布消息的信号。
要真正回答您的问题,这取决于您使用它们的目的。如果您只有一个节点实例在一台服务器上运行,那么也许事件发射器可以充当您的消息传递传输。
但是,如果您有多个节点实例,或者在多个服务器上运行多个实例,您可以扩展事件发射器以将其消息发布到 Redis,从而允许在其他服务器上运行的其他节点实例响应事件。
另一个很好的用例是 socket.io。如果您说聊天室使用套接字在房间之间进行广播,那么如果您的聊天应用程序分布在多个服务器上,则需要利用 Redis 发布/订阅。
于 2013-04-07T18:37:14.720 回答