Что такое Django LocMemCache (локальный кэш памяти)

LocMemCache – это локальный кэш памяти (Local‑memory cache backend), предоставляемый Django. Если вы не задаёте отдельный кэш, Django использует именно его по умолчанию. Он подходит для приложений со сравнительно простой структурой, где не требуется совместное использование памяти, а также для быстрых тестов на сервере разработки до настройки Redis.
Кратко о характеристиках
- Место хранения: RAM текущего процесса Django
- Область видимости: не разделяется между процессами (per‑process)
- Свойство: thread‑safe
Какие проблемы решает кэш
Кэш хранит «дорого вычисленные» или «тяжёлые» результаты, чтобы при последующих запросах можно было быстро их вернуть.
Например, если часто читается одно и то же значение из БД:
- Первый запрос: чтение из БД → запись результата в кэш
- Последующие запросы: мгновенный возврат из кэша (быстро)
LocMemCache сохраняет кэш не в внешней системе (Redis, Memcached и т.д.), а прямо в памяти процесса.
Три ключевых принципа работы
1) Кэш на уровне процесса (самое важное)
Документация Django чётко указывает, что локальный кэш – per‑process. Это значит:
- Если у вас 4 воркера Gunicorn → 4 отдельных кэша
- Если у вас 2 сервера → каждый сервер имеет свой кэш
Таким образом, кэш не делится между процессами и серверами.
2) Thread‑safe
Внутри одного процесса несколько потоков могут обращаться к кэшу одновременно, и он будет работать корректно.
3) При перезапуске кэш исчезает
Поскольку данные находятся только в памяти, при перезапуске процесса кэш очищается.
Как настроить
В settings.py укажите CACHES с нужным BACKEND:
CACHES = {
"default": {
"BACKEND": "django.core.cache.backends.locmem.LocMemCache",
"LOCATION": "unique-snowflake",
}
}
Пример из официальной документации. Параметр LOCATION служит идентификатором кэша, позволяющим отличать несколько экземпляров.
Плюсы
- Минимальная настройка: не нужно запускать внешний кэш‑сервер
- Высокая скорость: доступ к памяти процесса почти мгновенный
- Удобен для разработки/тестирования: быстро подключить кэш без внешних зависимостей
Минусы и предосторожности
- Разделение кэша в многопроцессных/многосерверных средах → может казаться, что кэш не работает
- Непредсказуемость в продакшене: при распределённом трафике кэш‑хит‑рейт может падать
- Не рекомендуется как хранилище сессий: в документации по сессиям отмечено, что локальный кэш не сохраняется надолго и не безопасен в многопроцессных конфигурациях
Когда стоит использовать
- Локальная среда разработки
- Однопроцессные приложения (или когда совместное использование кэша не требуется)
- Быстрая проверка функционала без внешних зависимостей
Если же у вас несколько процессов/серверов и требуется общий кэш, лучше выбрать Redis или Memcached.
Комментариев нет.