首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >初始化许多redis-py连接会降低服务器的速度吗?

初始化许多redis-py连接会降低服务器的速度吗?
EN

Stack Overflow用户
提问于 2021-02-17 04:08:19
回答 1查看 202关注 0票数 1

假设我在python服务器上打开了10个不同的redis连接,如下所示:

代码语言:javascript
复制
import redis

conn1 = redis.Redis(host=aaaa)
conn2 = redis.Redis(host=bbbb)
conn3 = redis.Redis(host=cccc)
...
conn10 = redis.Redis(host=jjjj)

redis-py是如何在幕后运行的,我的服务器会因为每次额外的redis.Redis()调用而变慢吗?

EN

回答 1

Stack Overflow用户

发布于 2021-08-17 09:22:54

redis-py使用ConnectionPool管理连接,并且它不预先填充连接池。只需发送命令即可创建连接。

下面的源代码足以帮助理解这个过程。如果你想深入挖掘,请阅读redis-py的源代码。

代码语言:javascript
复制
class Redis:
    def set(self, name, value,
            ex=None, px=None, nx=False, xx=False, keepttl=False, get=False):
            ...

            return self.execute_command('SET', *pieces, **options)

    def execute_command(self, *args, **options):
        ...
        conn = self.connection or pool.get_connection(command_name, **options)
        try:
            conn.send_command(*args)
            return self.parse_response(conn, command_name, **options)
            ...

ConnectionPool.get_connection()是conn创建的地方。实际上,它是正在创建的底层套接字。

代码语言:javascript
复制
class ConnectionPool:
    def get_connection(self, command_name, *keys, **options):
            ...
            try:
            # ensure this connection is connected to Redis
            connection.connect()
            ...

class Connection:
    ...
    def _connect(self):
        "Create a TCP socket connection"
        # we want to mimic what socket.create_connection does to support
        # ipv4/ipv6, but we want to set options prior to calling
        # socket.connect()
        err = None
        for res in socket.getaddrinfo(self.host, self.port, self.socket_type,
                                      socket.SOCK_STREAM):
            family, socktype, proto, canonname, socket_address = res
            sock = None
            try:
                sock = socket.socket(family, socktype, proto)
                ...
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66231465

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档