谁能告诉我Redis pub-sub可以支持的最大并发通道数是多少?订阅者和发布者的数量有上限吗?
答案 0 :(得分:5)
Redis使用与密钥相同的dict
结构来存储每个客户端和所有客户端的频道订阅(保留每个订阅的哈希值以及已订阅的客户端列表),因此最多总共2 ^ 32个频道订阅。
它使用列表来存储每个客户端的模式订阅,因此,理论上仅受可用节点内存的限制。
但是,通常来说,您可以拥有无限的渠道。在发布消息时,可以将频道视为标签。消息从不存储。消息发布后,Redis将查找订阅该频道的客户端,并测试每个模式订阅。该通道仅在发布消息时才真正存在。
由于有模式订阅,因此有无限的“逻辑”渠道。
仅在events notifications中,我们就有2 ^ 32 *数据库*关键事件类型可能的“逻辑”通道。
关于订阅者和发布者的数量,受maxclients
setting的限制,默认情况下为10,000。订阅者和发布者没有限制,但最大客户端(连接)限制适用。
如@Roman所示,有buffer limitations,但这主要是指吞吐量(消息处理)。
答案 1 :(得分:1)