管理从Python连接到redis

jer*_*uki 45 python connection redis

redis-py在我的python应用程序中使用在Redis数据库中存储简单变量或变量列表,所以我认为每次我需要保存或检索变量时创建与redis服务器的连接会更好,因为这不是经常并且不希望永久连接可能会超时.

阅读一些基本教程,我使用Redis类创建了连接,但没有找到关闭连接的方法,因为这是我第一次使用Redis.我不确定我是否使用最好的方法来管理连接,所以我想为此提出一些建议.这就是我现在变量setget变量的方式:

import redis

def getVariable(variable_name):
    my_server = redis.Redis("10.0.0.1")
    response = my_server.get(variable_name)
    return response

def setVariable(variable_name, variable_value):
    my_server = redis.Redis("10.0.0.1")
    my_server.set(variable_name, variable_value)
Run Code Online (Sandbox Code Playgroud)

我基本上使用这段代码来存储最后的连接时间,或者为我的应用程序和类似的东西获得每秒平均请求数.

谢谢你的建议.

Did*_*zia 72

Python使用引用计数器机制来处理对象,因此在块的末尾,my_server对象将被自动销毁并且连接关闭.您无需显式关闭它.

现在,这不是你应该如何管理Redis连接.每次操作的连接/断开都太昂贵,因此保持连接打开要好得多.使用redis-py可以通过声明连接池来完成:

import redis

POOL = redis.ConnectionPool(host='10.0.0.1', port=6379, db=0)

def getVariable(variable_name):
    my_server = redis.Redis(connection_pool=POOL)
    response = my_server.get(variable_name)
    return response

def setVariable(variable_name, variable_value):
    my_server = redis.Redis(connection_pool=POOL)
    my_server.set(variable_name, variable_value)
Run Code Online (Sandbox Code Playgroud)

请注意,连接池管理主要是自动的,并在redis-py中完成.

  • 这可能是因为此答案引用的旧版本的redis.py,但目前redis.py将为您设置连接池.无需明确表达. (7认同)
  • 不必要.Python将在销毁对POOL对象的最后一次引用时关闭连接(此处在脚本的末尾). (2认同)