Redis как правильно использовать как кэш и не потерять данные

Рейтинг: 70.3% · 39 голосов
SQL и NoSQL: PostgreSQL, MySQL, Redis, MongoDB, ClickHouse, ElasticSearch — проектирование схем, индексы, репликация и оптимизация запросов.
Ответить
Аватара пользователя
artem_node41
Сообщения: 16
Зарегистрирован: Пн май 11, 2026 11:48 pm

Redis как правильно использовать как кэш и не потерять данные

Сообщение artem_node41 »

Используем Redis 7 как кэш сессий и горячих данных. Недавно упал один из серверов и мы потеряли все сессии — пользователей повыкидывало. Как настроить Redis так, чтобы при падении одного узла данные не терялись? И вообще стоит ли включать AOF если Redis используется только как кэш?
👍 ❤️ 🔥 😄 🤔1
✔ Лучший ответ сформирован автоматически — kira_vue
Развёрнуто по архитектуре: если это production и сессии критичны — минимальная схема это 1 master + 1 replica + 3 Sentinel-процесса (можно на тех же хостах). В redis.conf на мастере: replica-lazy-flush yes, на репликах: replica-read-only yes. Сентинели настраиваются через sentinel.conf с параметрами sentinel monitor mymaster 2 (кворум 2 из 3). Приложение подключается к Sentinel, получ…
Перейти к ответу →
Аватара пользователя
vitaly_quant
Сообщения: 9
Зарегистрирован: Сб май 16, 2026 3:36 am

Re: Redis как правильно использовать как кэш и не потерять данные

Сообщение vitaly_quant »

Для кэша сессий потеря данных при падении — это вообще-то ожидаемое поведение Redis в базовой конфигурации. Вопрос в том, что именно вы хотите: отказоустойчивость (данные не теряются) или высокую доступность (сервис работает даже при падении узла). Это разные задачи.
👍 ❤️ 🔥 😄 🤔
Аватара пользователя
appdev1427
Сообщения: 6
Зарегистрирован: Пт май 22, 2026 1:23 pm

Re: Redis как правильно использовать как кэш и не потерять данные

Сообщение appdev1427 »

Для высокой доступности без потери данных нужен Redis Sentinel или Redis Cluster. Sentinel мониторит мастер, при падении промоутирует реплику в мастер — приложение переподключается и работает дальше. Replica lag при этом может привести к потере последних записей (зависит от настройки min-replicas-to-write), но большинство данных сохранится.
👍 ❤️ 🔥 😄 🤔
Аватара пользователя
vika_flux78
Сообщения: 2
Зарегистрирован: Пн май 11, 2026 2:12 am

Re: Redis как правильно использовать как кэш и не потерять данные

Сообщение vika_flux78 »

AOF для кэша — спорно. AOF с fsync=always убьёт производительность (в разы), fsync=everysec даст потерю максимум 1 секунды данных при краше ОС, но замедлит запись. Для сессий я бы сделал Sentinel + RDB снапшоты каждые 5 минут — этого обычно достаточно, и производительность не страдает.
👍 ❤️ 🔥 😄 🤔
Аватара пользователя
kira_vue
Сообщения: 2
Зарегистрирован: Ср май 20, 2026 8:58 pm

Re: Redis как правильно использовать как кэш и не потерять данные

Сообщение kira_vue »

✔ Лучший ответ — сформирован автоматически
Развёрнуто по архитектуре: если это production и сессии критичны — минимальная схема это 1 master + 1 replica + 3 Sentinel-процесса (можно на тех же хостах). В redis.conf на мастере: replica-lazy-flush yes, на репликах: replica-read-only yes. Сентинели настраиваются через sentinel.conf с параметрами sentinel monitor mymaster <ip> <port> 2 (кворум 2 из 3). Приложение подключается к Sentinel, получает от него адрес актуального мастера. При падении мастера Sentinel через ~30 секунд (настраивается через sentinel down-after-milliseconds) промоутирует реплику. Если хотите Redis Cluster — это сложнее в настройке, но даёт горизонтальное масштабирование и автоматический шардинг. Для просто отказоустойчивости Sentinel проще.
👍1 ❤️ 🔥1 😄 🤔1
Аватара пользователя
anna_data53
Сообщения: 6
Зарегистрирован: Пн май 11, 2026 1:21 am

Re: Redis как правильно использовать как кэш и не потерять данные

Сообщение anna_data53 »

Ещё момент: убедитесь что у сессий стоит TTL. Без TTL при падении и поднятии replica как новый master у вас постепенно накопится мусор. SET session:xxx данные EX 3600 — и не забивайте голову.
👍1 ❤️ 🔥 😄 🤔
Аватара пользователя
dockerssh2428
Сообщения: 20
Зарегистрирован: Вт май 12, 2026 9:04 am

Re: Redis как правильно использовать как кэш и не потерять данные

Сообщение dockerssh2428 »

У нас похожая история была. В итоге вынесли сессии в отдельный Redis с AOF everysec + Sentinel, а основной кэш оставили без персистентности вообще. Логика: если кэш упал — прогреем заново, это больно но не катастрофа. Если сессии упали — пользователи злятся. Разные данные — разные требования к надёжности.
👍 ❤️2 🔥 😄 🤔
Ответить
Поделиться темой: ✈ Telegram VK

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость