Как кэшировать модель Django в памяти

У меня есть модель в моем приложении, которая используется так много в моем приложении, некоторые представления сделали что-то вроде 100 запросов в этой таблице, у меня уже есть тонны оптимизаций, чтобы лучше использовать эту модель, но большая часть этой суммы вызвана Django init метод из других классов, по личным причинам... Поэтому я просто помещаю глобальную переменную для хранения всех объектов этой модели, поэтому, когда я создаю или удаляю один объект из этой модели, я просто перезагружаю этот список... но я не хочу использовать кэш-машины, такие как Memcached или Redis... я просто хочу сохранить этот результат QuerySet в памяти... И я хочу по-прежнему использовать менеджеров в этом кэшированном Queryset.

спасибо заранее и извините за мой плохой английский.

2 ответов


можно использовать предоставленное кэширование Django.

ответ к очень похожему вопросу получает вас на правильном пути.


Я бы предложил реализовать пользовательский менеджер моделей и набор запросов. Бэкэнд кэша django не должен быть memcached или redis, он также может быть localmemory, хотя я бы посоветовал вам встать на настоящий бэкэнд кэша. Мы в основном использовали https://github.com/jmoiron/johnny-cache для этой цели, но обнаружил, что он не совместим с django > 1.6, поэтому мы переключаемся на https://github.com/vijaykatam/django-cache-manager