ジャンゴredisの使い方

王林
リリース: 2023-06-03 14:53:13
転載
1223 人が閲覧しました

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 までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!