谁能告诉我 Redis pub-sub 可以支持的最大并发通道数是多少?订阅者和发布者的数量有上限吗
Valkey/Redis 使用
dict
(与键相同的结构)来存储每个客户端和所有客户端的频道订阅(保留每个订阅的哈希值以及订阅的客户端列表),因此最多为 2^总共 32 个频道订阅。
它使用列表来存储每个客户端的模式订阅,因此理论上仅受可用节点内存的限制。
但是,一般来说,您可以拥有无限个通道。将频道视为发布消息时的标签。消息永远不会被存储。当消息发布时,Redis 将查找订阅该频道的客户端,并测试每个模式订阅。该通道仅在消息发布时才真正存在。
由于存在模式订阅,因此存在无限的“逻辑”通道。
就在事件通知中,我们有2^32 *数据库*关键事件类型可能的“逻辑”通道。
maxclients
设置的限制,默认10,000。订阅者和发布者没有限制,但有最大客户端(连接)限制。
正如@Roman 所指出的,存在缓冲区限制,但这主要指的是吞吐量(消息处理)。