为什么即使只创建了Redis连接的一个实例,每次我在该实例上调用publish或subscribe时,它都会将其视为另一个客户端。所以当我使用python连接到redis时
import redis
redis_server = redis.Redis()它不会将其识别为新客户端。只有当我调用其中的一个时
redis_server.publish("channel", message)
redis_server.subscribe("channel")我可以看到有两个客户端已连接。在redis中,发布/订阅客户端是分开处理的吗?为什么不在新连接打开时注册已连接的客户端?
发布于 2019-03-20 19:59:46
默认情况下,redis-py为您提供了一个仅具有最大连接数的连接池。在您发出的第一个命令中,将建立一个真正的连接,您将看到它出现在服务器上的CLIENT LIST中。
每当Redis的任何客户端库发出订阅命令时,整个连接都会被这个命令占用,所以redis-py可能会为这个命令创建一个单独的连接。
这应该解释了为什么您看到没有客户端连接,然后是2。对于发出的每个命令,不一定是1个连接,因为池中的连接将被重用。
https://stackoverflow.com/questions/55189229
复制相似问题