Как инвалидация кеша тормозила платформу

Работал с affiliate-платформой в iGaming: 5 языковых локалей на примерно 15 доменах, монолит с 400+ таблицами. После внедрения автоперевода контент вырос в разы. Платформа стала периодически тормозить — всё сильнее по мере накопления кеша. В Redis хранили выборки, HTML-блоки и счётчики. Автоматизировали сбор метрик Redis: память, ключи, вытеснения, slowlog. Прогоны redis-benchmark помогали отслеживать изменение пропускной способности. С ростом числа ключей slowlog заполнялся всё быстрее. Основные гости — KEYS и DEL. Проследили их до массовой инвалидации по префиксам: её запускали изменения контента, комментарии и фоновые процессы. Полный обход ключей и синхронное удаление задерживали остальные запросы. Переписали адаптеры кеш-менеджера: SCAN для обхода порциями, UNLINK для удаления батчами с фоновым освобождением памяти. Время ответа стабилизировалось, прежние просадки при обновлении контента исчезли. Пропускная способность выросла, и обнаружилось следующее ограничение: CPU потока выполнения команд Redis. Выбирали между несколькими экземплярами Redis и многопоточным KeyDB, учитывая стоимость памяти и сложность эксплуатации. Проверили KeyDB на стенде и по результатам перевели прод. Число потоков подбирали замерами: 4 для кеша, по 2 для инстансов воркеров и сессий. Сначала устранили дорогую инвалидацию, затем масштабировали обработку запросов под выявленный предел CPU.

Такие дела!