Как решить проблему конкурентного доступа к товару при распродаже? Как использовать Redis для решения этой проблемы без блокировки на уровне БД?

Redis может атомарно проверить остаток и создать резерв через Lua-скрипт, не выполняя отдельные read и write. Но защита от overselling требует согласования долговечного учёта и отказов.

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

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

Redis может атомарно проверить остаток и создать резерв через Lua-скрипт, не выполняя отдельные read и write. Но защита от overselling требует согласования долговечного учёта и отказов.

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

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

Redis может атомарно проверить остаток и создать резерв через Lua-скрипт, не выполняя отдельные read и write. Но защита от overselling требует согласования долговечного учёта и отказов.

Скрипт должен проверять доступное количество, уменьшать его и фиксировать уникальный ID резерва. Повтор с тем же ID возвращает прежний результат. Резерв имеет срок и переходы подтверждения/отмены; возвращать остаток нужно ровно один раз. Асинхронная репликация или потеря Redis способны нарушить гарантии, если он единственный источник истины. Для строгой корректности нужны надёжный журнал/хранилище и reconciliation либо атомарное условное изменение в БД. «Без ручного DB-lock» не означает «без контроля согласованности».

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

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

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

Подробнее