Транзакции Redis

RedisRedisBeginner

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этой лабораторной работе вы изучите транзакции Redis. Транзакции Redis позволяют выполнять группу команд как единую, атомарную операцию, обеспечивая целостность данных. Вы узнаете, как начать транзакцию с помощью команды MULTI, ставить команды в очередь, а затем либо выполнить, либо отменить транзакцию. Вы попрактикуетесь в установке ключей, получении значений и увеличении счетчиков внутри транзакций.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL redis(("Redis")) -.-> redis/RedisGroup(["Redis"]) redis/RedisGroup -.-> redis/access_cli("Connect Using CLI") redis/RedisGroup -.-> redis/store_string("Set String Value") redis/RedisGroup -.-> redis/fetch_string("Get String Value") redis/RedisGroup -.-> redis/increment_int("Increase Integer Value") subgraph Lab Skills redis/access_cli -.-> lab-552106{{"Транзакции Redis"}} redis/store_string -.-> lab-552106{{"Транзакции Redis"}} redis/fetch_string -.-> lab-552106{{"Транзакции Redis"}} redis/increment_int -.-> lab-552106{{"Транзакции Redis"}} end

Начало транзакции 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, чтобы убедиться, что команда зарегистрирована:

exit

Добавление команд в очередь и выполнение транзакции

В этом шаге вы добавите больше команд в очередь транзакции, а затем выполните всю транзакцию с помощью команды EXEC.

Переподключитесь к серверу Redis:

redis-cli

Поскольку у нас есть существующая транзакция, нам нужно повторно войти в режим транзакции:

MULTI

Теперь давайте поставим в очередь команду для получения значения 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, чтобы убедиться, что команда зарегистрирована:

exit

Проверка выполнения транзакции

В этом шаге вы проверите, что команды в предыдущей транзакции были выполнены правильно, получив значения установленных вами ключей.

Переподключитесь к серверу Redis:

redis-cli

Чтобы проверить значения, используйте команду GET для каждого ключа:

GET mykey
GET anotherkey
GET mycounter

Вы должны увидеть следующий вывод:

"myvalue"
"anothervalue"
"1"

Это подтверждает, что транзакция была выполнена успешно, и значения ключей были обновлены, как и ожидалось.

Не забудьте выйти из среды redis-cli, чтобы убедиться, что команда зарегистрирована:

exit

Отмена транзакции с помощью DISCARD

В этом шаге вы узнаете, как отменить транзакцию Redis с помощью команды DISCARD. Это полезно, если вы решите, что не хотите выполнять поставленные в очередь команды.

Сначала подключитесь к серверу Redis и начните новую транзакцию:

redis-cli
MULTI

Теперь давайте поставим в очередь несколько команд:

SET mykey "newvalue"
INCR mycounter

Вы должны увидеть ответ QUEUED для каждой команды.

Теперь, вместо выполнения транзакции, давайте ее отменим. Используйте команду DISCARD:

DISCARD

Вы должны увидеть:

OK

Это подтверждает, что транзакция была отменена, и все поставленные в очередь команды были отброшены. Чтобы убедиться в этом, вы можете проверить значения mykey и mycounter. Они не должны были быть обновлены.

Не забудьте выйти из среды redis-cli, чтобы убедиться, что команда зарегистрирована:

exit

Итог

В этой лабораторной работе вы узнали, как использовать транзакции Redis для атомарного выполнения нескольких команд. Вы попрактиковались в запуске транзакций с помощью MULTI, постановке команд в очередь, выполнении транзакций с помощью EXEC и отмене транзакций с помощью DISCARD. Эти знания имеют решающее значение для поддержания согласованности данных в Redis при выполнении сложных операций.