Redis как правильно использовать как кэш и не потерять данные
Рейтинг: 70.3% · 39 голосов
Войдите, чтобы голосовать
Голосовать «За» и «Против» могут только авторизованные пользователи. Войдите в свой аккаунт — или зарегистрируйтесь, это займёт минуту.
Нет аккаунта? Зарегистрироваться
- artem_node41
- Сообщения: 16
- Зарегистрирован: Пн май 11, 2026 11:48 pm
Redis как правильно использовать как кэш и не потерять данные
Используем Redis 7 как кэш сессий и горячих данных. Недавно упал один из серверов и мы потеряли все сессии — пользователей повыкидывало. Как настроить Redis так, чтобы при падении одного узла данные не терялись? И вообще стоит ли включать AOF если 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 2 (кворум 2 из 3). Приложение подключается к Sentinel, получ…
- vitaly_quant
- Сообщения: 9
- Зарегистрирован: Сб май 16, 2026 3:36 am
Re: Redis как правильно использовать как кэш и не потерять данные
Для кэша сессий потеря данных при падении — это вообще-то ожидаемое поведение Redis в базовой конфигурации. Вопрос в том, что именно вы хотите: отказоустойчивость (данные не теряются) или высокую доступность (сервис работает даже при падении узла). Это разные задачи.
- appdev1427
- Сообщения: 6
- Зарегистрирован: Пт май 22, 2026 1:23 pm
Re: Redis как правильно использовать как кэш и не потерять данные
Для высокой доступности без потери данных нужен Redis Sentinel или Redis Cluster. Sentinel мониторит мастер, при падении промоутирует реплику в мастер — приложение переподключается и работает дальше. Replica lag при этом может привести к потере последних записей (зависит от настройки min-replicas-to-write), но большинство данных сохранится.
- vika_flux78
- Сообщения: 2
- Зарегистрирован: Пн май 11, 2026 2:12 am
Re: Redis как правильно использовать как кэш и не потерять данные
AOF для кэша — спорно. AOF с fsync=always убьёт производительность (в разы), fsync=everysec даст потерю максимум 1 секунды данных при краше ОС, но замедлит запись. Для сессий я бы сделал Sentinel + RDB снапшоты каждые 5 минут — этого обычно достаточно, и производительность не страдает.
Re: Redis как правильно использовать как кэш и не потерять данные
✔ Лучший ответ — сформирован автоматически
Развёрнуто по архитектуре: если это 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 проще.
- anna_data53
- Сообщения: 6
- Зарегистрирован: Пн май 11, 2026 1:21 am
- dockerssh2428
- Сообщения: 20
- Зарегистрирован: Вт май 12, 2026 9:04 am
Re: Redis как правильно использовать как кэш и не потерять данные
У нас похожая история была. В итоге вынесли сессии в отдельный Redis с AOF everysec + Sentinel, а основной кэш оставили без персистентности вообще. Логика: если кэш упал — прогреем заново, это больно но не катастрофа. Если сессии упали — пользователи злятся. Разные данные — разные требования к надёжности.
Поделиться темой:
✈ Telegram
VK
- Похожие темы
-
-
-
- Перешёл из бэкенда в ML и слегка в шоке — это нормально что 80% времени это данные?
8 ответов · 324 просмотров
-
-
-
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость