python - 当只打开一个连接时,为什么 redis pub 和 sub 被认为是不同的客户端?

标签 python python-3.x redis redis-py

为什么即使只创建了一个 Redis 连接实例,每次我对该实例调用发布或订阅时,它也将其视为另一个客户端。所以当我使用 python 连接到 redis 时

import redis
redis_server = redis.Redis()

它不承认它是新客户。只有当我调用其中之一时

redis_server.publish("channel", message) 
redis_server.subscribe("channel")

我可以看到有 2 个客户端已连接。发布/订阅客户端在 redis 中是分开处理的吗?为什么在新连接打开时不注册连接的客户端?

最佳答案

默认情况下,redis-py 会为您提供一个只有最大 个连接数的连接池。在您发出第一个命令时,将建立一个真正的连接,您会看到它出现在服务器上的 CLIENT LIST 中。

每当 Redis 的任何客户端库发出订阅命令时,整个连接都会被此占用,因此 redis-py 可能会创建一个专用于此的单独连接。

这应该可以解释为什么您看到没有客户端连接,然后是 2。发出的每个命令不一定有 1 个连接,因为池中的连接将被重用。

关于python - 当只打开一个连接时,为什么 redis pub 和 sub 被认为是不同的客户端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55189229/

相关文章:

Python: 'from module' 与 'from__main__' 使用 timeit 的奇怪行为

python - 如何找到多行配对(配对成员之间可能有行)

Python 无法连接到 HTTPS URL,因为 SSL 模块不可用 HTTPSConnectionPool(url, port=443)

python - 如何将 '\xff\xfe' 转义为可读字符串

multithreading - Dask:如何在 dask 延迟的情况下并行化我的代码?

node.js - 访问不同 node.js 文件之间的 session 变量

python - x[x!=x] 是什么意思?

python-3.x - 结束 ='' 语法错误 : invalid syntax

http - Redis 如何适应 ASP.NET Web API OData 世界?

Redis:可以放在多宿主系统上吗?