我注意到Socket.io正在为Pub和Sub使用两个独立的连接到Redis服务器.是否可以改善性能?或者它只是向更有组织的事件处理程序和代码的转变?两个单独的连接和一个单独的连接用于发布和订阅有什么好处和缺点.
PS系统正在推送它正在接收的相同数量的消息.它将更新推送到服务器,这些服务器位于层次结构中的同一级别,因此没有主服务器,推送消耗消息的所有更新或从服务器.一台服务器将有大约4-8个订阅,它会将消息发送回这些服务器.
PSS这对于专门建立的作业队列来说更像是一项工作吗?我正在看Redis的原因.是我已经在其中保留了一些共享对象,这些对象被所有服务器使用.消息队列是否值得添加另一个网络连接?
您需要为pub和sub使用两个连接.订户连接不能发出比其他任何命令subscribe
,psubscribe
,unsubscribe
,punsubscribe
(虽然@Antirez已经暗示用户安全的ping
在未来).如果您尝试做任何其他事情,redis会告诉您:
-ERR only (P)SUBSCRIBE / (P)UNSUBSCRIBE / QUIT allowed in this context
(请注意,您无法使用redis-cli对此进行测试,因为这样可以很好地理解协议,以防止您在订阅后发出命令 - 但任何其他基本套接字工具都可以正常工作)
这是因为订阅者连接的工作方式非常不同 - 而不是基于请求/响应,传入的消息现在可以随时进入,主动提供.
publish
是常规请求/响应命令,因此必须在常规连接上发送,而不是在订户连接上发送.