【问题标题】:How many channels can Redis support for PUB/SUB?Redis PUB/SUB 可以支持多少个频道?
【发布时间】:2026-01-02 04:20:02
【问题描述】:

我刚开始使用 Redis,我正在尝试了解它是如何工作的,所以如果我要说的不正确,我深表歉意。

我想构建一个实时系统,其中 Python 应用程序(我们将其称为 Data Collector)从大约 600 个市场中检索股票市场交易。这些交易应该发送到 Django 应用程序并实时显示在前端,所以我会让 Python 检索交易 > Django 接收它们并将它们发送到页面。

基本上我会使用 Redis 作为消息代理,它是一个 PUB/SUB 系统。所以数据收集器一直在运行,它检索交易并将它们发送到通道;每个市场都有一个渠道(600+)。在 Django 端,只要用户打开 XYZ 市场的页面,Django 就会连接到 XYZ 市场的 Redis 通道并获取该通道的交易。请记住,这些数据都不需要存储,只需要显示在我的前端即可。

从理论上讲,该系统应该可以工作,唯一让我怀疑的是在这种情况下有大量频道。 Redis 会支持非常多的通道吗?或者它不取决于我创建了多少频道?我应该寻找另一种方法吗?

【问题讨论】:

    标签: python django redis real-time


    【解决方案1】:

    为了找到满足您实时要求的最大通道数,您需要执行延迟分析并就[通道数与您所需的延迟达成一致] .凭直觉选择最大数量的通道是不明智的,因为它可能无法满足您的要求。

    Here 是关于 redis 通道/延迟分析的小讨论。

    此外,除了上述之外,如果需要,您还有以下两种选择来提高性能,它们是

    • Redis 集群
    • 应用 Redis 逻辑数据库

    【讨论】:

    • 这正是您应该关心的一点。问题不在于需要多少内存来跟踪“许多通道”,而在于您何时会面临应用程序无法接受的响应能力下降。
    【解决方案2】:

    如前所述:Redis pub sub max subscribers and publishers

    Redis 对最大通道数没有硬性限制;它是用户可配置的。

    【讨论】:

      【解决方案3】:

      这完全取决于您的服务器配置。

      通道数的一部分还有其他一些事情需要考虑,例如通过客户端浏览器的并发套接字连接数。

      您可以参考下面的链接来详细了解 pub/sub 的工作原理

      here

      【讨论】:

        最近更新 更多