Maison  >  Article  >  base de données  >  Comment utiliser Django Redis

Comment utiliser Django Redis

王林
王林avant
2023-06-03 14:53:131245parcourir

1. Description

redis, en tant que base de données de cache, joue un grand rôle dans tous les aspects. Python prend en charge le fonctionnement de Redis, il existe une bibliothèque Redis spécialement conçue pour Django, à savoir Django-redis

2.

pip install django-redis

3. Configuration

3.1 Configurer redis

Ouvrez le fichier de configuration de Django, tel que settings.py, et définissez l'élément CACHES dedans

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

Plusieurs informations de connexion Redis peuvent être configurées dans un CACHES, chacun avec son propre alias (alias), le "par défaut" ci-dessus est l'alias. Vous pouvez vous connecter à différentes bases de données Redis via différents alias

LOCATION est les informations de connexion, y compris le mot de passe de l'utilisateur du port IP, etc. Si un mot de passe utilisateur n'est pas requis, vous pouvez l'omettre. Django- Redis prend en charge trois protocoles de connexion, comme suit

protocole description exemple
redis:// connexion par socket TCP ordinaire redis://[ [nom d'utilisateur] : [mot de passe]]@localhost:6379/0
rediss Connexion socket SSL TCP rediss://[[nom d'utilisateur]:[mot de passe]]@localhost:6379/0
rediss:// Connexion au socket de domaine Unix unix://[[username]:[password]]@/path/to/socket.sock?db=0

3.2 Utiliser Redis pour stocker les sessions

La session par défaut de Django est stockée dans la base de données SQL, mais nous savons tous que les données ordinaires seront stockées sur le disque dur, ce qui n'est pas si rapide. Si vous souhaitez les modifier pour qu'elles soient stockées dans Redis, il vous suffit de les configurer. dans le fichier de configuration Un simple clic

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

3.3 Paramètre du délai d'expiration de la connexion Redis

Le nombre de secondes pour le délai d'expiration de la connexion peut être spécifié dans l'élément de configuration SOCKET_CONNECT_TIMEOUT représente le délai d'expiration de la connexion à Redis, et SOCKET_TIMEOUT représente le délai d'expiration de la lecture et de l'écriture. opérations utilisant redis

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

4. Utiliser redis

4.1 Utiliser le redis par défaut

Si vous souhaitez utiliser le redis par défaut, c'est-à-dire le redis avec l'alias "default" défini dans le fichier de configuration, vous pouvez vous référer au cache dans django.core.cache

from django.core.cache import cache

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

4.2 Utiliser le redis spécifié (Redis natif)

Lorsque vous écrivez plusieurs connexions Redis dans le fichier de configuration, vous pouvez spécifier quel Redis utiliser via des 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"))

Veuillez noter que le client a obtenu via get_redis_connection() est le client Redis natif, bien qu'il soit fondamentalement Il prend en charge toutes les commandes Redis natives, mais les données qu'il renvoie sont de type octet, vous devez les décoder vous-même

5 Pool de connexions

L'avantage d'utiliser un. Le pool de connexions est que vous n'avez pas à gérer les objets de connexion, il créera automatiquement des objets de connexion et tentera une utilisation répétée, donc les performances seront relativement meilleures

5.1 Configurez le pool de connexions

Pour utiliser le pool de connexions, d'abord écrivez le nombre maximum de connexions dans le pool de connexions dans le fichier de configuration de Django

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

5.2 Utiliser le pool de connexions

us Vous pouvez déterminer quel redis utiliser via l'alias de connexion, puis exécuter la commande normalement. sur les instances de connexion qu'il crée, mais vous pouvez vérifier combien d'instances de connexion sont actuellement créées via l'attribut _created_connections de connection_pool

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 Pool de connexions personnalisées

La classe de connexion par défaut de Django-redis est DefaultClient Si vous avez des exigences de personnalisation plus élevées. , vous pouvez créer votre propre classe et hériter de ConnectionPool

from redis.connection import ConnectionPool

class MyPool(ConnectionPool):
    pass

Après avoir cette classe, vous devez toujours la spécifier dans le fichier de configuration de Django

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer