我注意到Socket.io为Pub和Sub使用了两个单独的连接到Redis服务器。是什么东西可以提高性能吗?还是纯粹是向更有组织的事件处理程序和代码转移?两个单独的连接和一个用于发布和订阅的连接的优缺点是什么?
P.S.系统正在推动相同数量的消息,它正在接收。它将更新推送到服务器上,服务器在层次结构中处于相同的级别,因此没有主服务器,可以推送所有更新,或者从服务器上消耗消息。一个服务器大约有4-8个订阅,它会将消息发送回这些服务器。
P.S.S.S.,这更像是一种为特定目的构建的作业队列的工作吗?我看到Redis的原因。我已经在其中保留了一些共享对象,所有服务器都使用这些对象。消息队列是否值得添加另一个网络连接?
发布于 2014-03-27 12:01:49
您需要使用必需的来为pub和sub使用两个连接。订户连接除了subscribe、psubscribe、unsubscribe、punsubscribe之外不能发出任何命令(尽管@Antirez已经暗示了未来的用户安全ping )。如果你还想做什么,瑞迪斯告诉你:
-ERR only (P)SUBSCRIBE / (P)UNSUBSCRIBE / QUIT allowed in this context(请注意,您不能用redis-cli测试这一点,因为它对协议的理解足以防止您在订阅之后发出命令-但是任何其他基本套接字工具都应该工作得很好)
这是因为订阅者连接的工作方式非常不同--而不是在请求/响应的基础上工作,传入的消息现在可以在任何时候未经请求地传入。
publish是一个常规的请求/响应命令,因此必须在常规连接上发送,而不是订阅服务器连接。
https://stackoverflow.com/questions/22668244
复制相似问题