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
pip install django-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 |
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"
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读写操作超时时间,单位为秒 } } }
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"))
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
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
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} } } }
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)
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!