zoukankan      html  css  js  c++  java
  • Redis in python, how do you close the connection?

    down voteaccepted

    Just use redis.Redis. It uses a connection pool under the hood, so you don't have to worry about managing at that level.

    If you absolutely have to use a low level connection, you need to do the response handling that is normally done for you by redis.Redis.

    Here's an example of executing a single command using the low level connection:

    def execute_low_level(command, *args, **kwargs):
        connection = redis.Connection(**kwargs)
        try:
            connection.connect()
            connection.send_command(command, *args)
    
            response = connection.read_response()
            if command in redis.Redis.RESPONSE_CALLBACKS:
                return redis.Redis.RESPONSE_CALLBACKS[command](response)
            return response
    
        finally:
            del connection

    Example usage:

    response = execute_low_level(
            'HGET', 'redis:key', 'hash:key', host='localhost', port=6379)

    But as I said before, redis.Redis is the way to go in 99.9% of cases.

    you dont need worry about it when you use ConnectionPool.look at the source code:

    def execute_command(self, *args, **options):
        "Execute a command and return a parsed response"
        pool = self.connection_pool
        command_name = args[0]
        connection = pool.get_connection(command_name, **options)
        try: 
            connection.send_command(*args)
            return self.parse_response(connection, command_name, **options)
        except (ConnectionError, TimeoutError) as e:
            connection.disconnect()
            if not connection.retry_on_timeout and isinstance(e, TimeoutError):
                raise
            connection.send_command(*args)
            return self.parse_response(connection, command_name, **options)
        finally:
            pool.release(connection)

    finally,every connection will release to the pool no matter what you do, and it will assign to other client.

  • 相关阅读:
    VSCode搭建golang环境
    Jmeter之连接数据库
    Jmeter之『如果(If)控制器』
    mysql时间SQL
    正则表达式查找“不包含XXX字符串”
    Jmeter5.3源码编译
    Log4j源码分析
    12 个 JS 技巧
    高效学习很重要
    IntelliJ IDEA自动导入包去除星号(import xxx.*)
  • 原文地址:https://www.cnblogs.com/ExMan/p/9807322.html
Copyright © 2011-2022 走看看