Redis(redis-py)可以处理多少个通道?

How many channels can Redis (redis-py) handle?

我的任务是为大量听众使用 pub/sub。这是 docs:

订阅的简化示例
r = redis.StrictRedis(...)
p = r.pubsub()
p.subscribe('my-first-channel', 'my-second-channel', ...)

for message in p.listen():
...     # do something with the message

假设我要订阅一个频道的客户client-#id。每个客户一个渠道。问题是:如果我有成百上千的用户,可以使用这种方法吗?我是否应该为一个频道订阅所有这些并在消息中编码 user-#id 以在接收时过滤?

这取决于您如何配置 Redis 以及您将生成的流量。客户端订阅只是一个网络连接,因此您可以拥有其中的很多。 Redis 非常强大,即使在相对较弱的 CPU 内核上也可以轻松地使服务器的 NIC 饱和,因此如果您所有 100K 的客户端一直在通信,这可能是一个瓶颈。在这种情况下,您需要部署一个 Redis 集群来横向扩展和处理负载。