Выбор ответа Middle NoSQL и выбор хранилища обновлено
Простая блокировка в Redis
Вопрос
Что делает SET lock:order:42 <token> NX EX 30?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Атомарно ставит ключ, только если его нет, с TTL 30 секунд. NX означает «только если не существует», EX 30 задаёт TTL в секундах.
Варианты ответа
- Ставит ключ, перезаписывая существующий, и удаляет через 30 секунд
- Атомарно ставит ключ, только если его нет, с TTL 30 секундправильный ответ
- Ставит ключ, только если он уже есть, и продлевает на 30 секунд
- Ставит ключ на 30 минут, если он есть, иначе возвращает ошибку
Разбор
NX означает «только если не существует», EX 30 задаёт TTL в секундах. Это основа простой распределённой блокировки: кто первым поставил ключ, тот владеет ресурсом, а TTL защищает от вечной блокировки при падении владельца. Перезапись без условия была бы без NX, условие «если уже есть» задаёт XX, минуты в этой команде не используются. Снимать блокировку надо, проверив свой токен (обычно Lua-скриптом), иначе можно снять чужую.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.