Конвейеризация и транзакция в redis

Когда мы используем транзакцию в redis, она в основном передает все команды внутри транзакции. И когда запускается EXEC, все команды выполняются вместе, таким образом, всегда сохраняя атомарность нескольких команд.

Не так ли, как конвейерная обработка.

Как происходит конвейерная обработка и транзакция. Кроме того, почему не существует ничейной природы redis. Почему мы явно нуждаемся в конвейерной обработке/транзакции.

Ответы

Ответ 1

Конвейеризация - это прежде всего оптимизация сети. Это по существу означает, что клиент буферизует кучу команд и отправляет их на сервер за один раз. Команды не гарантируются в транзакции. Преимущество здесь заключается в том, чтобы экономить время в обе стороны сети для каждой команды.

Redis однопоточный, поэтому индивидуальная команда всегда атомарна, но две заданные команды от разных клиентов могут выполняться последовательно, чередуясь между ними, например.

Multi/exec, однако, гарантирует, что другие клиенты не выполнят команды между командами в последовательности multi/exec.