Введение
В этой лабораторной работе вы изучите продвинутые методы управления ключами в Redis. Вы начнете с того, как переименовывать ключи с помощью команды RENAME, подключившись к серверу Redis через redis-cli, установив пару ключ-значение, а затем переименовав её и проверив результат.
Далее вы узнаете, как перемещать ключи между различными базами данных Redis с помощью команды MOVE. Лабораторная работа проведет вас через процесс переноса ключа из одной базы данных в другую внутри одного экземпляра Redis. Также будут рассмотрены способы установки и получения нескольких ключей сразу и эффективный перебор ключей.
Переименование ключа с помощью 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 поддерживает несколько логических баз данных в рамках одного экземпляра. По умолчанию их 16, пронумерованных от 0 до 15. Команда MOVE позволяет перенести ключ из текущей выбранной базы данных в другую.
Сначала убедитесь, что вы подключены к серверу Redis через redis-cli. Откройте терминал в директории ~/project и введите:
redis-cli
Вы должны увидеть приглашение 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. Это эффективнее, чем использование нескольких команд SET, так как сокращает количество запросов к серверу Redis.
Убедитесь, что вы подключены к серверу Redis через redis-cli. Если вы еще не подключены, откройте терминал в директории ~/project и введите:
redis-cli
Вы должны увидеть приглашение 127.0.0.1:6379>.
У нас уже есть ключ mykey в базе данных 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. Это эффективнее, чем использование нескольких команд GET, так как сокращает количество запросов к серверу.
Убедитесь, что вы подключены к серверу Redis через redis-cli. Откройте терминал в директории ~/project и введите:
redis-cli
Вы должны увидеть приглашение 127.0.0.1:6379>.
С предыдущего этапа у нас есть следующие ключи и значения:
mykey:newvaluekey1:value1key2:value2key3:value3key4: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-cli. Откройте терминал в директории ~/project и введите:
redis-cli
Вы должны увидеть приглашение 127.0.0.1:6379>.
С предыдущих этапов у нас есть следующие ключи:
mykeykey1key2key3key4
Команда 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. Вы узнали, как использовать команду MSET для эффективной установки нескольких ключей одновременно и команду MGET для получения их значений. Наконец, вы изучили команду SCAN — мощный инструмент для перебора ключей в больших базах данных без блокировки сервера.


