redis-py 默认有连接池吗?

作者站长头像
站长
· 阅读数 6

redis-py 在和后端框架做集成的时候,我好奇 redis-py 和 redis server 之间的连接管理机制

比如, 假设后端框架是多线程模型,每来一个 http 请求,都会新开一个线程去处理改 HTTP 请求,视图函数内,要访问 redis server 根据 key 取 value 并且返回给 http client

假设 redis_client 作为全局变量

redis_client = redis.StrictRedis(host='localhost', port=6379, db=0)

视图函数里面调用 redis_client

value = redis_client.get('my_key')

那么此时此刻,redis-py 会为每个线程都创建一个独立隔离的 TCP 连接并且在线程结束之后就销毁 redis 连接吗?

还是说 redis-py 内部维护了一套复用和 redis server 通讯的 redis 连接?

回复
1个回答
avatar
test
2024-06-26

看源码解决了

https://github.com/redis/redis-py/blob/master/redis/client.py

if not connection_pool:
    ....
    connection_pool = ConnectionPool(**kwargs)
    ...
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容