MULTI открывает очередь команд, EXEC выполняет их атомарно как один блок, DISCARD отменяет очередь без выполнения.
Разбор
- Команды внутри накапливаются и не видны другим клиентам до EXEC.
- Это optimistic concurrency, не полноценные SQL-транзакции с изоляцией уровней.
WATCH добавляет проверку ключей перед EXEC (CAS-подобно).
- Ошибка в одной команде может не откатить уже выполненные в EXEC (зависит от типа ошибки) — читайте семантику.
Итог
MULTI/EXEC — атомарный батч команд; WATCH — условное выполнение.