Выбор ответа Middle NoSQL и выбор хранилища обновлено

Простая блокировка в Redis

Вопрос

Что делает SET lock:order:42 <token> NX EX 30?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Атомарно ставит ключ, только если его нет, с TTL 30 секунд. NX означает «только если не существует», EX 30 задаёт TTL в секундах.

Варианты ответа

  1. Ставит ключ, перезаписывая существующий, и удаляет через 30 секунд
  2. Атомарно ставит ключ, только если его нет, с TTL 30 секундправильный ответ
  3. Ставит ключ, только если он уже есть, и продлевает на 30 секунд
  4. Ставит ключ на 30 минут, если он есть, иначе возвращает ошибку

Разбор

NX означает «только если не существует», EX 30 задаёт TTL в секундах. Это основа простой распределённой блокировки: кто первым поставил ключ, тот владеет ресурсом, а TTL защищает от вечной блокировки при падении владельца. Перезапись без условия была бы без NX, условие «если уже есть» задаёт XX, минуты в этой команде не используются. Снимать блокировку надо, проверив свой токен (обычно Lua-скриптом), иначе можно снять чужую.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.