与单个 Redis 通道相比,使用 Redis 通道的成本是多少

What are the costs of using Redis channels over single Redis channel

我有一些代码基本上可以执行此 psudocode()

registerCamera(id) {
       createRedisPubChannel("Camera_"+id)
}

cameraDisconnect() {
        removeRedisSubChannel("Camera_"+id)
}

然后我通过那个频道与那个相机通信,这让我有多个引擎。

我还可以构建代码,而不是为每个摄像头创建一个通道。我可以创建一个名为 "cameraComms" 的频道,并确保每条消息都包含一个摄像头 ID。

我想知道这两种设计模式在性能上有什么优势/劣势吗?

如果有帮助,我可以在每个进程中注册多达 200 多个摄像头,并且通过 3 个不同的盒子进行通信 运行 3 个 Redis 实例。

Help/advice 非常感谢。

先决条件:

从性能的角度来看,没有。频道,没有。出版商和没有。订阅者的数量并不重要,但您处理消息的频率和数量很重要。

例如,

1 个发布者一次发布 1000 条消息比 1000 个发布者一次发送 1 条消息造成的开销更多。

同样,1 个订阅者接收 1000 条消息会导致比 1000 个订阅者一次接收 1 条消息更多的开销。

订阅同一频道的订阅者越多,发布的消息副本就越多,这是一种开销。

So the thumb Rule here is :

 1. Publisher do not flood messages at once.
 2. Subscriber must not be in a position to receive flooded messages at once.

回答你的问题:

如果您的发布商很重,您可以为 n 个相机使用 n 个通道。 1 个发布者将在一个频道中发布,1 个订阅者将收到这些消息。这样,您最终将拥有 n 个频道、n 个发布者和 n 个订阅者。

如果您的发布者不重,您可以使用单一渠道,发布者将发送相机 ID,而您的单一订阅者将使用消息和过程。