ホームページ  >  記事  >  データベース  >  ジャンゴredisの使い方

ジャンゴredisの使い方

王林
王林転載
2023-06-03 14:53:131204ブラウズ

1. 説明

Redis はキャッシュ データベースとしてあらゆる面で大きな役割を果たします。Python は Redis の操作をサポートしています。Django を使用する場合は、Django 用に特別に設計された Redis ライブラリ、つまり django- があります。 redis

2. インストール

pip install django-redis

3. 構成

3.1 redis の構成

Django 構成ファイル (setting.py など) を開き、CACHES を設定します。その中のItem

CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379/1",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    }
}

複数のredis接続情報を1つのCACHEに設定できます。それぞれに独自のエイリアス(alias)があります。上記の「デフォルト」はエイリアスです。その際、異なるredisに接続できます異なるエイリアスによるデータベース

LOCATION は、IP ポートのユーザー パスワードなどを含む接続情報です。ユーザー パスワードが必要ない場合は、省略できます。django-redis は、次の 3 つの接続プロトコルをサポートします。

##redis://通常の TCP スイート インターフェイス接続 redissrediss://3.2 redis を使用してセッションを保存する
プロトコル 説明
#redis://[[ユーザー名]:[パスワード]]@localhost:6379/0
SSL モード TCP ソケット接続 rediss://[[ユーザー名]:[パスワード]]@localhost:6379/0
Unix ドメイン ソケット接続 unix://[[ユーザー名]:[パスワード]]@/path/to/socket.sock?db=0

Django のデフォルトのセッションは SQL データベースに保存されますが、通常のデータはハードディスクに保存されることは誰もが知っており、速度はそれほど速くありませんRedis に保存されるように変更したい場合は、設定ファイルで設定するだけです

SESSION_ENGINE = "django.contrib.sessions.backends.cache"
SESSION_CACHE_ALIAS = "default"

3.3 redis 接続タイムアウト設定

接続タイムアウトの秒数SOCKET_CONNECT_TIMEOUT は接続を示します redis のタイムアウト、SOCKET_TIMEOUT は redis

CACHES = {
    "default": {
        # ...
        "OPTIONS": {
            "SOCKET_CONNECT_TIMEOUT": 5,  # 连接redis超时时间,单位为秒
            "SOCKET_TIMEOUT": 5,  # redis读写操作超时时间,单位为秒
        }
    }
}

4 を使用した読み取りおよび書き込み操作のタイムアウトを表します。

デフォルトの redis を使用する場合、つまり、設定ファイルに設定されたエイリアス「default」を持つ redis は、django.core.cache

from django.core.cache import cache

cache.set("name", "冰冷的希望", timeout=None)
print(cache.get("name"))

4.2 のキャッシュを参照できます。指定した redis (ネイティブ redis) を使用します

設定ファイルに複数の redis 接続が記述されている場合、エイリアスを通じてどの redis を使用するかを指定できます

from django_redis import get_redis_connection

redis_conn = get_redis_connection("chain_info")
redis_conn.set("name", "icy_hope")
print(redis_conn.get("name"))

クライアントが取得したものであることに注意してくださいget_redis_connection() 経由はネイティブ Redis クライアントですが、基本的にはすべてネイティブ Redis コマンドがサポートされていますが、返されるデータはバイト型であるため、自分でデコードする必要があります

#5. 接続プール

接続プールを使用する利点は、接続オブジェクトを管理する必要がないことです。接続オブジェクトが自動的に作成され、可能な限り再利用されるため、パフォーマンスが比較的向上します。

5.1 設定接続プール

接続プールを使用するには、まず Django 設定ファイルに最大接続プール サイズを書き込みます。接続数

CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        ...
        "OPTIONS": {
            "CONNECTION_POOL_KWARGS": {"max_connections": 100}
        }
    }
}

5.2 接続プールの使用

決定できます。接続エイリアスを介して使用する Redis を指定し、通常どおりコマンドを実行します。作成される接続インスタンスについて気にする必要はありませんが、connection_pool の _created_connections 属性を使用して、現在作成されている接続インスタンスの数を確認します

from django_redis import get_redis_connection

redis_conn = get_redis_connection("default")
redis_conn.set("name", "冰冷的希望")
print(redis_conn.get("name"))

# 查看目前已创建的连接数量
connection_pool = redis_conn.connection_pool
print(connection_pool._created_connections)

5.3 カスタム接続プール

Django-redis のデフォルトの接続クラスは DefaultClient ですが、より高度なカスタマイズ要件がある場合は、独自の新しいクラスを作成して ConnectionPool

from redis.connection import ConnectionPool

class MyPool(ConnectionPool):
    pass
# を継承できます。 ##このクラスを取得したら、Django 構成ファイルで指定する必要があります

"OPTIONS": {
    "CONNECTION_POOL_CLASS": "XXX.XXX.MyPool",
}

以上がジャンゴredisの使い方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。