Введение
В этой лабораторной работе вы познакомитесь с транзакциями Redis. Транзакции Redis позволяют выполнять группу команд как единую атомарную операцию, обеспечивая согласованность данных. Вы узнаете, как начать транзакцию с помощью команды MULTI, ставить команды в очередь, а затем либо выполнить, либо отменить транзакцию. Вы попрактикуетесь в установке ключей, получении значений и инкрементировании счетчиков в рамках транзакций.
Начало транзакции Redis
На этом шаге вы узнаете, как инициировать транзакцию в Redis с помощью команды MULTI. Транзакции Redis гарантируют, что серия команд будет выполнена как единое атомарное целое. Это означает, что либо все команды выполняются успешно, либо ни одна из них, обеспечивая целостность данных.
Сначала подключитесь к серверу Redis с помощью команды redis-cli в вашем терминале:
redis-cli
Теперь, когда вы находитесь в среде redis-cli, вы можете начать транзакцию. Введите следующую команду и нажмите Enter:
MULTI
Вы должны увидеть следующий вывод:
OK
Это подтверждает, что Redis перешел в режим транзакции. Любые последующие введенные вами команды будут поставлены в очередь и выполнены вместе, когда вы используете команду EXEC.
Поставим в очередь нашу первую команду. Мы установим ключ с именем mykey и значением myvalue. Введите следующую команду и нажмите Enter:
SET mykey "myvalue"
Вывод должен быть следующим:
QUEUED
Это указывает на то, что команда SET была успешно добавлена в очередь транзакции. Она не будет выполнена до тех пор, пока мы явно не укажем Redis сделать это.
Оставьте среду redis-cli открытой для следующего шага.
Добавление команд в очередь и выполнение транзакции
На этом шаге вы добавите больше команд в очередь транзакции, а затем выполните всю транзакцию с помощью команды EXEC.
Теперь поставим в очередь команду для получения значения mykey:
GET mykey
Вы должны увидеть:
QUEUED
Далее добавим еще одну команду для установки другого ключа, anotherkey, со значением anothervalue:
SET anotherkey "anothervalue"
Вывод должен быть следующим:
QUEUED
Наконец, поставим в очередь команду INCR для инкрементирования счетчика с именем mycounter. Если mycounter не существует, Redis создаст его и инициализирует значением 0 перед инкрементированием:
INCR mycounter
Вы должны увидеть:
QUEUED
Теперь вы поставили в очередь несколько команд в рамках транзакции. Чтобы выполнить их все одновременно, используйте команду EXEC:
EXEC
Вывод должен выглядеть примерно так:
1) OK
2) "myvalue"
3) OK
4) (integer) 1
Разберем вывод:
1) OK: Результат командыSET mykey "myvalue".2) "myvalue": Результат командыGET mykey.3) OK: Результат командыSET anotherkey "anothervalue".4) (integer) 1: Результат командыINCR mycounter.
Все команды в рамках транзакции были выполнены атомарно.
Оставьте среду redis-cli открытой для следующего шага.
Проверка выполнения транзакции
На этом шаге вы проверите, были ли команды из предыдущей транзакции выполнены корректно, получив значения установленных вами ключей.
Чтобы проверить значения, используйте команду GET для каждого ключа:
GET mykey
GET anotherkey
GET mycounter
Вы должны увидеть следующий вывод:
"myvalue"
"anothervalue"
"1"
Это подтверждает, что транзакция была выполнена успешно, и значения ключей были обновлены как ожидалось.
Оставьте среду redis-cli открытой для следующего шага.
Отмена транзакции с помощью DISCARD
На этом шаге вы узнаете, как отменить транзакцию Redis с помощью команды DISCARD. Это полезно, если вы решили не выполнять команды, поставленные в очередь.
Сначала подключитесь к серверу Redis и начните новую транзакцию:
MULTI
Теперь поставим в очередь несколько команд:
SET mykey "newvalue"
INCR mycounter
Вы должны увидеть ответ QUEUED для каждой команды.
Теперь, вместо выполнения транзакции, отменим ее. Используйте команду DISCARD:
DISCARD
Вы должны увидеть:
OK
Это подтверждает, что транзакция была отменена, и все поставленные в очередь команды были отброшены. Для проверки вы можете посмотреть значения mykey и mycounter. Они не должны были быть обновлены.
Не забудьте выйти из среды redis-cli, чтобы убедиться, что команда залогирована:
exit
Резюме
В этой лабораторной работе вы научились использовать транзакции Redis для атомарного выполнения нескольких команд. Вы практиковались в запуске транзакций с помощью MULTI, постановке команд в очередь, выполнении транзакций с помощью EXEC и отмене транзакций с помощью DISCARD. Эти знания имеют решающее значение для поддержания согласованности данных в Redis при выполнении сложных операций.


