Выбор ответа Senior Кеширование обновлено

Политика вытеснения Redis

Вопрос

Redis используется и как кеш, и для хранения сессий. При заполнении памяти пользователей стало выкидывать из аккаунтов. Что проверить?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: maxmemory-policy: allkeys-lru вытесняет и сессии; разделить экземпляры. При достижении maxmemory Redis вытесняет ключи по политике. allkeys-lru не отличает кеш от сессий.

Варианты ответа

  1. maxmemory-policy: allkeys-lru вытесняет и сессии; разделить экземплярыправильный ответ
  2. Версию Python и redis-py: старые клиенты теряют сессии при переподключении
  3. Число воркеров gunicorn: каждый держит свои сессии и вытесняет чужие
  4. Настройку CONN_MAX_AGE: при закрытии соединения Redis удаляет сессию

Разбор

При достижении maxmemory Redis вытесняет ключи по политике. allkeys-lru не отличает кеш от сессий. Варианты: отдельный экземпляр Redis для данных, которые нельзя терять, или политика volatile-lru, вытесняющая только ключи с TTL (тогда у сессий TTL быть не должно, что не всегда желательно). Остальные варианты к вытеснению отношения не имеют.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.