Выбор ответа Middle NoSQL и выбор хранилища спрашивают часто обновлено
Почему команды Redis атомарны
Вопрос
Почему INCR counter в Redis безопасен при тысячах параллельных клиентов?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Redis выполняет команды в одном потоке по очереди. Основной цикл Redis обрабатывает команды последовательно в одном потоке (сетевой ввод-вывод в новых версиях может идти в нескольких потоках, но выполнение команд остаётся последовательным), поэтому каждая команда атомарна.
Варианты ответа
- Redis выполняет команды в одном потоке по очередиправильный ответ
- Redis берёт блокировку на каждый ключ, как строковая блокировка в PostgreSQL
- Redis хранит счётчики в транзакционном журнале и сериализует их
- INCR не безопасен, нужен MULTI/EXEC вокруг каждой команды
Разбор
Основной цикл Redis обрабатывает команды последовательно в одном потоке (сетевой ввод-вывод в новых версиях может идти в нескольких потоках, но выполнение команд остаётся последовательным), поэтому каждая команда атомарна. Пока выполняется INCR, другая команда не вклинится. Блокировок по ключам нет, они не нужны. MULTI/EXEC нужен, чтобы атомарно выполнить несколько команд, одна команда атомарна и так. Журнал AOF отвечает за сохранность, а не за атомарность.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.