¿Qué es Django LocMemCache (caché de memoria local)?

LocMemCache es el backend de caché de memoria local que ofrece Django. Si no configuras un caché externo, Django utiliza este caché local por defecto. Su estructura sencilla lo hace ideal para aplicaciones sin compartir memoria, para operar de forma rápida y sencilla, o para probar rápidamente en un servidor de desarrollo antes de configurar Redis.
Resumen de características
- Ubicación de almacenamiento: RAM del proceso de Django en ejecución
- Alcance de compartición: No se comparte fuera del proceso (per‑process)
- Característica: thread‑safe
¿Qué problema resuelve?
La caché sirve para almacenar temporalmente resultados que son costosos de calcular o consultar, y reutilizarlos en solicitudes posteriores.
Por ejemplo, si colocas en caché un valor que se consulta frecuentemente en la base de datos:
- Primera solicitud: consulta a la BD → se guarda el resultado en caché
- Solicitudes siguientes: se devuelve inmediatamente desde la caché (rápido)
LocMemCache guarda esta caché sin sistemas externos (Redis/Memcached, etc.) directamente en la memoria del proceso.
Tres aspectos clave del funcionamiento
1) Es una caché por proceso (lo más importante)
La documentación de Django lo indica claramente: la caché de memoria local es per‑process. Es decir,
- Si tienes 4 workers de Gunicorn → 4 cachés
- Si tienes 2 servidores → cada servidor tiene su propia caché
Por lo tanto, no se comparte la caché entre procesos o servidores.
2) Es thread‑safe
Está diseñada para que varios hilos dentro del mismo proceso accedan de forma segura.
3) Se borra al reiniciar el proceso
Al estar solo en memoria, al reiniciar el proceso la caché se inicializa de nuevo.
Cómo configurarlo
En settings.py define CACHES con el BACKEND correspondiente.
CACHES = {
"default": {
"BACKEND": "django.core.cache.backends.locmem.LocMemCache",
"LOCATION": "unique-snowflake",
}
}
El ejemplo de la documentación es el anterior; LOCATION actúa como identificador para distinguir instancias de caché.
Ventajas
- Poca configuración: no necesitas levantar un servidor de caché externo
- Rápido: acceso a la memoria del mismo proceso reduce la latencia
- Práctico para desarrollo/pruebas: ideal para “probar la idea de caché” sin dependencias externas
Desventajas y precauciones
- Fragmentación en entornos multi‑proceso/multi‑servidor → puede parecer que la caché no funciona
- Dificultad de predicción en producción: al distribuir el tráfico entre varios procesos la tasa de aciertos puede bajar
- No recomendado como almacenamiento de sesiones: la documentación de sesiones de Django advierte que la caché local no persiste y no es segura en entornos multi‑proceso
Cuándo usarlo
- Entorno de desarrollo local
- Un solo proceso (o tareas que no requieren compartir caché)
- Validación de funcionalidades / pruebas con mínima dependencia externa
En cambio, si necesitas que varios procesos o servidores compartan la misma caché, es más habitual optar por Redis o Memcached.