在单个Redis频道上使用Redis频道的成本是多少

时间:2016-06-21 07:48:01

标签: node.js redis redis-cluster ioredis

我有一些基本上执行此psudocode()

的代码
registerCamera(id) {
       createRedisPubChannel("Camera_"+id)
}

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

然后我通过该频道与该摄像机通信,这使我可以拥有多个引擎。

我还可以构建代码,以便不是每个摄像头创建一个频道。我可以创建一个名为" cameraComms"并确保每封邮件都包含一个摄像头ID。

我想知道这两种设计模式都有任何性能优势/劣势吗?

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

非常感谢帮助/建议。

1 个答案:

答案 0 :(得分:1)

<强>先决条件:

在绩效方面,没有。渠道,没有。出版商和没有。订阅者并不重要,但您处理的消息的频率和数量确实很重要。

例如,

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,您的单个订阅者将使用该消息和流程。