Rumah  >  Artikel  >  pangkalan data  >  Cara menggunakan django redis

Cara menggunakan django redis

王林
王林ke hadapan
2023-06-03 14:53:131204semak imbas

1. Penerangan

Sebagai pangkalan data cache, redis memainkan peranan yang hebat dalam semua aspek. Jika anda menggunakan Django, terdapat perpustakaan redis yang direka khas untuk Django, iaitu django-redis

2. Pasang

pip install django-redis

3. Konfigurasikan

3.1 Konfigurasi redis

Buka fail konfigurasi Django, seperti setting.py, dan tetapkan CACHES dalam ia Item

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

Maklumat sambungan redis berbilang boleh dikonfigurasikan dalam satu CACHES Setiap satu mempunyai alias sendiri (alias" di atas ialah alias Kemudian anda boleh menyambung ke pangkalan data redis yang berbeza

LOKASI ialah maklumat sambungan, termasuk kata laluan pengguna port IP, dsb. Jika kata laluan pengguna tidak diperlukan, anda boleh meninggalkannya django-redis menyokong tiga protokol sambungan, seperti berikut

协议 说明 举例
redis:// 普通的TCP套接字连接 redis://[[username]:[password]]@localhost:6379/0
rediss SSL方式的TCP套接字连接 rediss://[[username]:[password]]@localhost:6379/0
rediss:// Unix域套接字连接 unix://[[username]:[password]]@/path/to/socket.sock?db=0

3.2 Menggunakan sesi Penyimpanan redis

Sesi lalai Django disimpan dalam pangkalan data sql, tetapi kita semua tahu bahawa data biasa akan disimpan pada cakera keras, yang tidak begitu pantas untuk disimpan dalam redis, cuma Anda hanya perlu mengkonfigurasinya dalam fail konfigurasi

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

3.3 Tetapan tamat masa sambungan Redis

Bilangan saat tamat masa sambungan boleh ditentukan dalam item konfigurasi . SOCKET_CONNECT_TIMEOUT menunjukkan masa tamat untuk menyambung ke redis, dan SOCKET_TIMEOUT menunjukkan penggunaan Masa tamat untuk operasi baca dan tulis semula

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

4.1 Gunakan redis

Jika anda ingin menggunakan redis lalai, tetapkannya dalam fail konfigurasi Redis dengan alias "lalai" boleh merujuk kepada cache dalam django.core.cache

from django.core.cache import cache

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

4.2 Gunakan redis yang ditentukan (redis asli)

Apabila anda menulis berbilang sambungan redis, anda boleh menentukan redis yang hendak digunakan melalui alias

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"))

Sila ambil perhatian bahawa klien yang diperoleh melalui get_redis_connection() ialah klien Redis asli semua arahan redis asli, ia mengembalikan Data adalah jenis bait, anda perlu menyahkodnya sendiri

5 Kolam sambungan

Kelebihan menggunakan kolam sambungan ialah anda tidak mempunyai untuk mengurus objek sambungan. Ia akan membuat beberapa objek sambungan secara automatik dan menggunakannya semula sebanyak mungkin, jadi secara relatifnya, prestasi akan menjadi lebih baik

5.1 Mengkonfigurasi kumpulan sambungan

Untuk menggunakan sambungan pool, anda mesti terlebih dahulu menulis bilangan maksimum sambungan dalam kolam sambungan dalam fail konfigurasi Django

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

5.2 Menggunakan kolam sambungan

Kami boleh menentukan redis yang hendak digunakan melalui alias sambungan, dan kemudian laksanakan arahan seperti biasa. Kami tidak perlu mengambil berat tentang kejadian sambungan yang dibuatnya, tetapi anda boleh melihat ciptaan semasa melalui atribut _created_connections bagi connection_pool Berapa banyak tika sambungan terdapat

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 Kumpulan sambungan tersuai

Kelas sambungan lalai Django-redis ialah DefaultClient Jika anda mempunyai keperluan penyesuaian yang lebih tinggi, anda boleh membuat kelas baharu anda sendiri

from redis.connection import ConnectionPool

class MyPool(ConnectionPool):
    pass

Selepas mempunyai kelas ini, anda perlu. untuk menentukannya dalam fail konfigurasi Django

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

Atas ialah kandungan terperinci Cara menggunakan django redis. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam