Как в реальной системе выбрать TTL (тайм-аут) для Redis-блокировки при update_user? Какие данные и инструменты использовать?

TTL выбирают по измеренной длительности критической секции, включая хвосты и сбои, но один большой timeout не гарантирует безопасность. После истечения lease старый worker может продолжить работу одновременно с новым.

Короткий ответ

Что ответить на собеседовании

TTL выбирают по измеренной длительности критической секции, включая хвосты и сбои, но один большой timeout не гарантирует безопасность. После истечения lease старый worker может продолжить работу одновременно с новым.

Подробный разбор

Ответ с пояснениями

TTL выбирают по измеренной длительности критической секции, включая хвосты и сбои, но один большой timeout не гарантирует безопасность. После истечения lease старый worker может продолжить работу одновременно с новым.

Соберите гистограммы времени update_user, traces, задержки Redis/БД и паузы процесса. Продление и освобождение должны проверять уникальный токен владельца атомарно. При потере lease операция должна прекращать изменения; для защиты ресурса полезны fencing token или версия записи, проверяемые самим хранилищем. Если меняется одна строка БД, её транзакционная блокировка или условный UPDATE часто надёжнее отдельного Redis-lock.

Источник: redis.io.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее