48

私はredis-pyPythonアプリケーションで単純な変数または変数のリストをRedisデータベースに保存するために使用しているため、変数を保存または取得する必要があるたびにredisサーバーへの接続を作成する方がよいと考えました。非常に頻繁に行われ、タイムアウトする永続的な接続を持ちたくありません。

いくつかの基本的なチュートリアルを読んだ後、Redis クラスを使用して接続を作成しましたが、Redis を使用するのはこれが初めてであるため、接続を閉じる方法が見つかりませんでした。接続を管理するために最善のアプローチを使用しているかどうかわからないので、アドバイスをお願いします。これは、私が今変数をsetting またはting している方法です:get

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)

私は基本的にこのコードを使用して、最後の接続時間を保存したり、アプリに対して行われた 1 秒あたりの平均リクエスト数を取得したりします。

アドバイスありがとうございます。

4

3 に答える 3

77

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)

接続プールの管理はほとんど自動で、redis-py 内で行われることに注意してください。

于 2012-10-19T11:41:17.160 に答える