为什么我不能让一个 Redis 客户端在同一连接中充当 PUB 和 Sub?



我的心理模型是一个'聊天',我订阅了某个频道,我可以向这个频道发布消息。

由于发布/订阅是异步的,因此发布的消息可以在任何时间出现,包括在您期待对命令的响应时。

虽然redis是单线程的,这通常可以防止这种事情,但网络延迟可能会导致一些有趣的影响——根据消息的内容,你可以在服务器实际接收到命令之前收到一个有效的响应。

也就是说,如果你真的想的话,你可以使用一个连接——"不应该"one_answers"不能"是不一样的,redis遵循一个简单的设计理念,不要试图阻止你搬起石头砸自己的脚。但是,只打开两个到服务器的连接要简单得多。如果您达到了每个客户端两个连接的连接限制,那么您可能很快就会遇到每个客户端一个连接的问题。

当客户端发出SUBSCRIBE或PSUBSCRIBE时,该连接将进入"pub/sub"模式。此时,只有修改订阅集的命令才是有效的。当订阅集为空时,连接将返回到常规模式。

如果你需要在pub/sub模式下向Redis发送常规命令,只需打开另一个连接。

最新更新