Qu’est‑ce que le cache LocMemCache de Django ?

LocMemCache est le backend de cache en mémoire locale fourni par Django. Si aucune configuration de cache n’est définie, Django utilise ce cache local par défaut. Il est souvent employé dans des applications à structure relativement simple, pour un fonctionnement rapide et autonome sans partage de mémoire, ou pour tester rapidement un serveur de développement avant de mettre en place Redis.
Résumé des caractéristiques
- Emplacement de stockage : RAM du processus Django en cours d’exécution
- Portée de partage : Non partagé hors du processus (per‑process)
- Spécificité : Thread‑safe
Quel problème résout‑il ?
Le cache sert à conserver temporairement les résultats de calculs ou de requêtes coûteuses afin de les réutiliser lors des requêtes suivantes.
Par exemple, si vous mettez dans le cache une valeur fréquemment lue depuis la base de données :
- Première requête : lecture de la BD → stockage du résultat dans le cache
- Requêtes suivantes : retour immédiat depuis le cache (rapide)
LocMemCache stocke ce cache directement dans la mémoire du processus sans recourir à un système externe (Redis, Memcached, etc.).
Trois points clés du fonctionnement
1) Cache par processus (le plus important)
La documentation de Django précise que le cache en mémoire locale est per‑process. Ainsi :
- 4 workers Gunicorn → 4 caches distincts
- 2 serveurs → un cache par serveur
Il n’est donc pas possible de partager le cache entre processus ou serveurs.
2) Thread‑safe
Il est conçu pour être sûr même lorsqu’un même processus est accédé simultanément par plusieurs threads.
3) Le cache disparaît au redémarrage
Étant stocké uniquement en mémoire, le cache est réinitialisé à chaque redémarrage du processus.
Comment le configurer
Dans settings.py, définissez CACHES avec le backend approprié.
CACHES = {
"default": {
"BACKEND": "django.core.cache.backends.locmem.LocMemCache",
"LOCATION": "unique-snowflake",
}
}
L’exemple officiel utilise cette structure ; LOCATION sert d’identifiant pour distinguer les instances de cache.
Avantages
- Configuration minimale : pas besoin de lancer un serveur de cache externe
- Rapidité : accès à la mémoire du même processus, faible latence
- Pratique pour le développement / les tests : idéal pour expérimenter le concept de cache sans dépendances externes
Inconvénients et précautions
- Cache fragmenté en multi‑processus / multi‑serveurs → peut donner l’impression que le cache ne fonctionne pas
- Difficulté de prévision en production : la répartition du trafic sur plusieurs processus peut réduire le taux de hit
- Pas recommandé comme stockage de session : la documentation de Django avertit que le cache en mémoire locale n’est pas durable et n’est pas sûr en multi‑processus
Quand l’utiliser
- Environnement de développement local
- Un seul processus (ou lorsqu’aucun partage de cache n’est requis)
- Vérification de fonctionnalités / tests (réduction des dépendances externes)
En revanche, si vous avez besoin de partager le même cache entre plusieurs processus ou serveurs, il est généralement préférable d’envisager Redis ou Memcached.
Aucun commentaire.