Сриване на Redis при Noeviction Policy OOM
"maxmemory-policy noeviction" изглеждаше безопасно. Без загуба на данни, нали?
Какво се случи:
- Redis достигна maxmemory лимита
- noeviction политика: отхвърляне на всички записи
- Приложението не можеше да пише нови кеш записи
- Но също не можеше да пише сесийни данни
- Потребителите биваха изхвърлени по средата на транзакция
- Неуспешните плащания скочиха 400%
Реалният проблем:
Съхранявахме както разходващ се кеш, ТАКА И критични сесийни данни в същата Redis инстанция със същата политика за изхвърляне.
Решението:
- Отделни Redis инстанции за кеш срещу сесии
- Кеш: allkeys-lru (изхвърляне на най-старите когато е пълен)
- Сесии: noeviction + агресивни TTL-ове + мониторинг
- Аларми когато паметта достигне 80%
Урок: Вашата политика за изхвърляне трябва да съвпада с важността на данните. Разходващ се кеш и критични сесии се нуждаят от различни стратегии.