Ключи в Redis без TTL: память кончилась, ключи начали пропадать
Результаты поиска по каталогу складываются в Redis без времени жизни: ключ формируется из параметров фильтра. Через несколько недель потребление памяти дошло до maxmemory, и стали пропадать ключи, которые команда считала «постоянными» — в том числе пользовательские сессии.
Что здесь верно?
- Redis всегда сам удаляет старые ключи по LRU независимо от настроек, поэтому TTL нужен только сессиям и другим временным данным
- Проблема решается перезапуском Redis по расписанию раз в сутки: память освобождается, и до следующего запуска её гарантированно хватает
- Кэш-ключам задают TTL: без него данные копятся, и при достижении лимита памяти Redis начинает вытеснять ключи по настроенной политике
- Результаты поиска нужно хранить бессрочно и просто добавить памяти: TTL приведёт к промахам и заметно замедлит выдачу каталога
