2016-02-17 3 views
1

Я хочу использовать кеширование в Django, и я зациклился на том, как это сделать. У меня есть данные в некоторых конкретных моделях, которые интенсивно пишут. записи будут постоянно добавляться к модели. Каждый пользователь имеет некоторые конкретные данные в модели, похожие на таблицу заказов. Поскольку моя модель интенсивно пишет, я не уверен, насколько эффективными будут кеширующие структуры в Django. Я попробовал Django просмотреть конкретное кэширование, и я пытаюсь разработать представление, где сначала он будет извлекать данные из кеша. Затем у меня будет другой вызов, который будет содержать данные, которые были добавлены в модель после завершения кэширования. Я хочу добавить обновленные данные в исходные данные кеша и сохранить их снова.Обновление существующих данных кеша с новыми элементами в django

Как будто я не хочу истекать кеш, я просто хочу продолжать добавлять к моим существующим данным кеша. может быть один раз в 3 часа, я могу это очистить.

Это то, что я делаю правильно. Есть ли лучшие способы, чем это. Могу ли я добавить элементы в существующий кеш.

Я буду очень рад за вашу помощь

ответ

0

Вы спрашиваете о «кэширование», который является очень широкая тема, и ответ всегда смесь мнения, стиль и конкретных требований приложения. Вот несколько моментов для рассмотрения.

  1. Если данные для каждого пользователя, вы можете кэширует его для каждого пользователя:

    from django.core.cache import cache cache.set(request.user.id,"foo") cache.get(request.user.id)

  2. Обычная практика это держать флаг базы данных, который говорит вам, если данные пользователя изменились с ним был кеширован. Поэтому, прежде чем вы извлекаете данные из кеша, проверьте только этот флаг из БД. Если флаг ничего не изменит, получите данные из кеша. Если он изменился, вытащите из БД, замените кеш и снова установите флаг.

  3. Проверка флага должна быть быстрой и простой: одна таблица, проиндексированная пользователем.id и поле булевского флага. Это сжимает много строк индекса на одну страницу БД и обеспечивает быструю выборку одной строки поля. Тем не менее вы по-прежнему получаете постоянное обновление основного хранилища, которое предотвращает использование не обновленных данных кеша. Вы можете проверить этот флаг в промежуточном программном обеспечении.

  4. Вы можете выполнить истечение срока действия по-разному: очистить кеш при выходе пользователя из системы, запустить cron-скрипт, который очищает элементы, или разрешить истечение срока действия кеша. Если вы используете проверку флага перед использованием кеша, нет проблемы с сохранением элементов в кеше, кроме пробела, и кэширование бэкэндов обрабатывает это. Если вы используете простой файловый кеш django (это простой, простой и нулевой конфиг), вам придется очистить кеш. Простой скрипт cron.

+0

Спасибо за ответ. Действительно хорошие идеи –

Смежные вопросы