我有一个使用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
进行编码以过滤收听?
答案 0 :(得分:1)
这是您如何配置Redis以及您将生成的流量的问题。客户端订阅只是一个网络连接,因此您可以拥有其中的一些。 Redis功能非常强大,即使在相对较弱的CPU内核上,也很容易使服务器的NIC饱和,因此如果所有100K的客户端都在进行通信,那么这可能是一个瓶颈。在这种情况下,您需要部署Redis群集以扩展和处理负载。