Maison > base de données > Redis > le corps du texte

Comment utiliser Django Redis

王林
Libérer: 2023-06-03 14:53:13
avant
1244 Les gens l'ont consulté

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
Copier après la connexion

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",
        }
    }
}
Copier après la connexion

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

protocoledescriptionexemple
redis://connexion par socket TCP ordinaireredis://[ [nom d'utilisateur] : [mot de passe]]@localhost:6379/0
redissConnexion socket SSL TCPrediss://[[nom d'utilisateur]:[mot de passe]]@localhost:6379/0
rediss://Connexion au socket de domaine Unixunix://[[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"
Copier après la connexion

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读写操作超时时间,单位为秒
        }
    }
}
Copier après la connexion

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"))
Copier après la connexion

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"))
Copier après la connexion

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}
        }
    }
}
Copier après la connexion

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)
Copier après la connexion

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
Copier après la connexion

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",
}
Copier après la connexion

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!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal