Транзакции Redis

RedisBeginner

Введение

В этой лабораторной работе вы познакомитесь с транзакциями 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 при выполнении сложных операций.