Расширенное управление ключами Redis

RedisRedisBeginner
Практиковаться сейчас

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

Введение

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

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


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") subgraph Lab Skills redis/access_cli -.-> lab-552094{{"Расширенное управление ключами Redis"}} redis/store_string -.-> lab-552094{{"Расширенное управление ключами Redis"}} redis/fetch_string -.-> lab-552094{{"Расширенное управление ключами Redis"}} end

Переименование ключа с помощью RENAME

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

Сначала давайте подключимся к серверу Redis, используя интерфейс командной строки Redis (redis-cli). Откройте терминал в каталоге ~/project и введите следующую команду:

redis-cli

Вы должны увидеть приглашение Redis: 127.0.0.1:6379>.

Теперь давайте установим пару ключ-значение, которую мы сможем переименовать. Используйте команду SET для создания ключа с именем mykey со значением myvalue:

SET mykey myvalue

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

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

GET mykey

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

Теперь давайте переименуем ключ mykey в newkey с помощью команды RENAME:

RENAME mykey newkey

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

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

GET mykey

Вы должны увидеть вывод: (nil), что означает, что ключ больше не существует.

Теперь попробуйте получить значение нового ключа (newkey):

GET newkey

Вы должны увидеть вывод: "myvalue", что подтверждает, что ключ был успешно переименован.

Наконец, давайте переименуем ключ newkey обратно в mykey для следующих шагов:

RENAME newkey mykey

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

Убедитесь, что ключ переименован обратно:

GET mykey

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

Не забудьте выйти из redis-cli, набрав exit или нажав Ctrl+D. Это гарантирует, что ваши команды будут правильно зарегистрированы.

exit

Теперь вы успешно переименовали ключ в Redis с помощью команды RENAME.

Перемещение ключа между базами данных с помощью команды MOVE

В этом шаге вы узнаете, как переместить ключ из одной базы данных Redis в другую с помощью команды MOVE. Redis поддерживает несколько логических баз данных в пределах одного экземпляра (instance). По умолчанию существует 16 баз данных, пронумерованных от 0 до 15. Команда MOVE позволяет переносить ключ из текущей выбранной базы данных в другую.

Сначала убедитесь, что вы подключены к серверу Redis с помощью интерфейса командной строки Redis (redis-cli). Откройте терминал в вашем каталоге ~/project и введите следующую команду:

redis-cli

Вы должны увидеть приглашение Redis: 127.0.0.1:6379>. По умолчанию вы подключены к базе данных 0.

У нас уже есть ключ с именем mykey со значением myvalue в базе данных 0 из предыдущего шага. Давайте проверим это:

GET mykey

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

Теперь давайте переместим ключ mykey из базы данных 0 в базу данных 1 с помощью команды MOVE:

MOVE mykey 1

Вы должны увидеть вывод: (integer) 1, что означает, что ключ был успешно перемещен.

Чтобы убедиться, что ключ был перемещен, попробуйте получить значение ключа mykey в базе данных 0:

GET mykey

Вы должны увидеть вывод: (nil), что означает, что ключ больше не существует в базе данных 0.

Теперь переключитесь на базу данных 1 с помощью команды SELECT:

SELECT 1

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

Теперь попробуйте получить значение ключа mykey в базе данных 1:

GET mykey

Вы должны увидеть вывод: "myvalue", что подтверждает, что ключ был успешно перемещен в базу данных 1.

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

SELECT 0

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

Теперь переместите ключ mykey из базы данных 1 в базу данных 0:

MOVE mykey 0

Вы должны увидеть вывод: (error) ERR source and destination objects are the same.

Эта ошибка возникает потому, что вы выполнили SELECT 0, а затем MOVE mykey 0 в той же сессии. Команда MOVE не позволяет перемещать ключ в ту же базу данных, в которой он находится в данный момент.

Чтобы переместить ключ в другую базу данных, вам нужно сначала выбрать целевую базу данных, а затем использовать команду MOVE.

Например, сначала выберите базу данных 1:

SELECT 1

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

Теперь переместите ключ mykey из базы данных 1 в базу данных 0:

MOVE mykey 0

Вы должны увидеть вывод: (integer) 1, что означает, что ключ был успешно перемещен.

Теперь вернитесь в базу данных 0:

SELECT 0

Убедитесь, что ключ вернулся в базу данных 0:

GET mykey

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

Не забудьте выйти из redis-cli, набрав exit или нажав Ctrl+D. Это гарантирует, что ваши команды будут правильно зарегистрированы.

exit

Теперь вы успешно переместили ключ между базами данных Redis с помощью команды MOVE.

Установка нескольких ключей с помощью MSET

В этом шаге вы узнаете, как установить несколько ключей с соответствующими значениями одной командой, используя команду MSET в Redis. Это более эффективно, чем использование нескольких команд SET, поскольку уменьшает количество обращений к серверу Redis (round trips).

Сначала убедитесь, что вы подключены к серверу Redis, используя интерфейс командной строки Redis (redis-cli). Если вы еще не подключены, откройте терминал в каталоге ~/project и введите следующую команду:

redis-cli

Вы должны увидеть приглашение Redis: 127.0.0.1:6379>.

У нас уже есть ключ с именем mykey со значением myvalue в базе данных 0 из предыдущих шагов. Теперь давайте установим еще два ключа, key1 и key2, со значениями value1 и value2 соответственно, используя команду MSET:

MSET key1 value1 key2 value2

Вы должны увидеть вывод: OK, что означает, что ключи были успешно установлены.

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

GET key1

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

GET key2

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

Теперь давайте установим три ключа, включая mykey, используя MSET:

MSET mykey newvalue key3 value3 key4 value4

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

Проверьте значения:

GET mykey

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

GET key3

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

GET key4

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

Не забудьте выйти из redis-cli, набрав exit или нажав Ctrl+D. Это гарантирует, что ваши команды будут правильно зарегистрированы.

exit

Теперь вы успешно установили несколько ключей с помощью команды MSET.

Получение нескольких ключей с помощью MGET

В этом шаге вы узнаете, как получить значения нескольких ключей одной командой, используя команду MGET в Redis. Это более эффективно, чем использование нескольких команд GET, поскольку уменьшает количество обращений к серверу Redis (round trips).

Сначала убедитесь, что вы подключены к серверу Redis, используя интерфейс командной строки Redis (redis-cli). Откройте терминал в каталоге ~/project и введите следующую команду:

redis-cli

Вы должны увидеть приглашение Redis: 127.0.0.1:6379>.

Из предыдущего шага у нас есть следующие ключи и значения:

  • mykey: newvalue
  • key1: value1
  • key2: value2
  • key3: value3
  • key4: value4

Теперь давайте получим значения key1, key2 и mykey с помощью команды MGET:

MGET key1 key2 mykey

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

1) "value1"
2) "value2"
3) "newvalue"

Этот вывод показывает значения ключей в том порядке, в котором они были указаны в команде MGET.

Теперь давайте получим значения key3, key4 и несуществующего ключа key5 с помощью команды MGET:

MGET key3 key4 key5

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

1) "value3"
2) "value4"
3) (nil)

Обратите внимание, что значение для несуществующего ключа key5 равно (nil).

Не забудьте выйти из redis-cli, набрав exit или нажав Ctrl+D. Это гарантирует, что ваши команды будут правильно зарегистрированы.

exit

Теперь вы успешно получили несколько ключей с помощью команды MGET.

Эффективная итерация по ключам с помощью SCAN

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

Сначала убедитесь, что вы подключены к серверу Redis с помощью интерфейса командной строки Redis (redis-cli). Откройте терминал в вашем каталоге ~/project и введите следующую команду:

redis-cli

Вы должны увидеть приглашение Redis: 127.0.0.1:6379>.

Из предыдущих шагов у нас есть следующие ключи:

  • mykey
  • key1
  • key2
  • key3
  • key4

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

Давайте начнем итерацию с курсора 0:

SCAN 0

Вы должны увидеть вывод, похожий на этот:

1) "0"
2) 1) "key2"
   2) "key3"
   3) "key4"
   4) "key1"
   5) "mykey"

Первый элемент в выводе ("0") - это значение курсора. Второй элемент - это массив ключей, найденных в этой итерации. Поскольку возвращенный курсор равен 0, это указывает на то, что итерация завершена, и мы получили все ключи за одно сканирование.

Вы также можете использовать опцию MATCH для фильтрации ключей на основе шаблона. Например, чтобы найти все ключи, которые начинаются с key, используйте следующую команду:

SCAN 0 MATCH key*

Вы должны увидеть вывод, похожий на этот:

1) "0"
2) 1) "key2"
   2) "key3"
   3) "key4"
   4) "key1"

Курсор равен "0", что означает, что итерация завершена, и мы видим, что возвращаются только ключи, соответствующие нашему шаблону "key*" (исключая "mykey").

Вы также можете использовать опцию COUNT, чтобы подсказать Redis о количестве элементов, которые вы хотели бы получить за один вызов. Обратите внимание, что это всего лишь подсказка, и Redis может вернуть больше или меньше элементов. Например:

SCAN 0 COUNT 3

Вы должны увидеть вывод, похожий на этот:

1) "6"
2) 1) "key2"
   2) "key3"
   3) "key4"

В этом случае мы получаем новое значение курсора "6", указывающее на то, что есть еще ключи для сканирования. Вы должны продолжить итерацию, используя это новое значение курсора, пока не получите курсор "0".

Не забудьте выйти из redis-cli, набрав exit или нажав Ctrl+D. Это гарантирует, что ваши команды будут правильно зарегистрированы.

exit

Теперь вы успешно выполнили итерацию по ключам в Redis с помощью команды SCAN.

Итог

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

В лабораторной работе также была представлена концепция баз данных Redis и команда MOVE, которая позволяет перемещать ключи между этими логическими базами данных в пределах одного экземпляра Redis (Redis instance). Вы узнали, как использовать команду MSET для эффективной установки нескольких ключей одновременно, и команду MGET для получения их значений. Наконец, вы изучили команду SCAN, мощный инструмент для итерации по ключам в больших базах данных без блокировки сервера. Не забывайте всегда выходить из redis-cli после каждого шага, чтобы ваши команды были зарегистрированы для проверки.