Redis — это быстрый, популярный, удобный инструмент для кэширования и хранения данных в памяти. Но когда его пытаются приспособить для ограничения частоты запросов (rate limiting), он внезапно превращается в источник неожиданных багов, гонок и утечек памяти. На первый взгляд всё просто: пара команд SET + INCR или хитрое именование ключей по времени, и вот у нас уже готов «идеальный» ограничитель. Но под капотом — хаос. Из статьи Андрея Миллера следует, что любые «простые» схемы в Redis быстро ломаются. Вот основные ловушки: Да, Lua в Redis решает часть проблем: вся логика выполняется на сервере, гонки исчезают. Но мы приходим к абсурду — используем Redis как контейнер для куска кода, который прекрасно мог бы жить в приложении или в специализированном rate limiting-сервисе. При этом: Мне кажется, основная причина, почему компании идут по этому пути, — это инфраструктурная инерция. Redis уже есть в проекте, он быстрый, знакомый, а до продакшн-проблем далеко. На тестах всё «летает», но в
🚫 Redis как rate limiter: мифы, ошибки и реальность
9 августа 20259 авг 2025
7
2 мин