事件处理-我应该使用单独的连接与Redis的Pub和Sub



我注意到Socket。io使用两个独立的Pub和Sub连接到Redis服务器。它能提高性能吗?或者仅仅是向更有组织的事件处理程序和代码的转变?两个独立连接和一个单独连接用于发布和订阅的优点和缺点是什么?

注:系统推送的消息数与接收的消息数相等。它将更新推送到在层次结构中处于同一级别的服务器,因此不存在推送所有更新的主服务器,也不存在消费消息的从服务器。一台服务器将有大约4-8个订阅,它将把消息发送回这些服务器。

P.S.S.这更像是一个专门构建的作业队列的作业吗?我关注Redis的原因。我已经在其中保留了一些共享对象,这些对象被所有服务器使用。消息队列是否值得添加另一个网络连接?

要求使用pub和sub两个连接。订阅者连接不能发出subscribe, psubscribe, unsubscribe, punsubscribe以外的任何命令(尽管@Antirez暗示将来会有订阅者安全的ping)。如果你尝试做其他事情,redis会告诉你:

-ERR only (P)SUBSCRIBE / (P)UNSUBSCRIBE / QUIT allowed in this context

(请注意,您不能使用redis-cli进行测试,因为它可以很好地理解协议,从而防止您在订阅后发出命令-但是任何其他基本的套接字工具都应该可以正常工作)

这是因为订阅者连接的工作方式非常不同-而不是在请求/响应的基础上工作,传入的消息现在可以在任何时候进入,未经请求。

publish是一个常规的请求/响应命令,所以必须在常规连接上发送,而不是订阅者连接。

最新更新