Операции с ключами
В Managed Valkey все управление ключами выполняется командами Valkey. С полным списком команд Valkey вы можете ознакомиться в официальной документации Valkey.
Обратите внимание, что в Managed Valkey некоторые команды Valkey недоступны.
Проверить существование ключа
Заголовок раздела «Проверить существование ключа»Чтобы проверить существование одного или нескольких ключей, используйте команду EXISTS.
Подключитесь к кластеру.
Переключитесь на нужную базу данных.
Выполните команду:
text EXISTS <имя ключа 1> [<имя ключа 2> ...]Команда вернет количество существующих ключей среди указанных. При проверке одного ключа вернется
1, если ключ существует, и0, если ключ не существует. Если одно имя указано несколько раз, существующий ключ будет учтен при каждом повторении.
Получить тип значения
Заголовок раздела «Получить тип значения»Чтобы получить тип значения ключа, используйте команду TYPE.
Подключитесь к кластеру.
Переключитесь на нужную базу данных.
Узнайте имя ключа с помощью итеративного обхода.
Выполните команду:
text TYPE <имя ключа>Команда вернет название типа значения. Если ключ не существует, команда вернет
none.
Переименовать ключ
Заголовок раздела «Переименовать ключ»Чтобы переименовать ключ, используйте команду RENAME.
Подключитесь к кластеру.
Переключитесь на нужную базу данных.
Узнайте имя ключа с помощью итеративного обхода.
Выполните команду:
text RENAME <имя ключа> <новое имя ключа>Команда переименует ключ и вернет
OK. Если ключ с новым именем уже существует, его значение будет перезаписано. Если исходный ключ не существует, команда вернет ошибку.
Переместить ключ в другую базу данных
Заголовок раздела «Переместить ключ в другую базу данных»Чтобы переместить ключ в другую базу данных того же кластера, используйте команду MOVE.
Подключитесь к кластеру.
Переключитесь на нужную базу данных.
Узнайте имя ключа с помощью итеративного обхода.
Выполните команду:
text MOVE <имя ключа> <номер базы данных>В команде
<номер базы данных>— номер целевой базы данных, отличный от номера текущей базы. Допустимые номера — от0доN-1, гдеN— количество баз данных, заданное параметром databases.Команда переместит ключ вместе со значением и вернет
1. В исходной базе данных ключ будет удален. Если исходный ключ не существует или в целевой базе данных уже есть ключ с таким именем, команда вернет0и не переместит ключ.
Скопировать ключ
Заголовок раздела «Скопировать ключ»Чтобы скопировать значение ключа, используйте команду COPY.
Подключитесь к кластеру.
Переключитесь на нужную базу данных.
Узнайте имя исходного ключа с помощью итеративного обхода.
Узнайте имя существующего целевого ключа с помощью итеративного обхода.
Выберите имя для нового целевого ключа и убедитесь, что оно не занято.
Выполните команду:
text COPY <имя исходного ключа> <имя целевого ключа> [DB <номер базы данных>] [REPLACE]В команде:
DB <номер базы данных>— скопировать значение в указанную базу данных того же кластера. Если параметр не указан, будет использована текущая база данных.Допустимые номера базы данных — от
0доN-1, гдеN— количество баз данных, заданное параметром databases.REPLACE— перезаписать целевой ключ, если он существует.
В пределах одной базы данных имена исходного и целевого ключей должны различаться.
Команда скопирует значение и вернет
1. Исходный ключ сохранится. Если исходный ключ не существует или целевой ключ существует, но параметрREPLACEне указан, команда вернет0и не создаст копию.
Найти ключи по шаблону
Заголовок раздела «Найти ключи по шаблону»Чтобы найти ключи по шаблону, используйте команду KEYS.
Для использования команды KEYS у пользователя должны быть права на ее выполнение или выполнение команд категории dangerous.
Подключитесь к кластеру.
Переключитесь на нужную базу данных.
Выполните команду:
text KEYS <шаблон>В команде
<шаблон>— шаблон имени ключа. Например:user:*— имена, которые начинаются сuser:;user:?— имена, в которых послеuser:указан один символ;user:[ab]— именаuser:aиuser:b.
Шаблон
*подойдет для всех ключей в текущей базе данных.Команда вернет список имен ключей, соответствующих шаблону. Если совпадений нет, команда вернет пустой список. Порядок ключей не будет гарантирован.
Итеративно обойти ключи
Заголовок раздела «Итеративно обойти ключи»Чтобы итеративно обойти ключи, используйте команду SCAN.
Подключитесь к кластеру.
Переключитесь на нужную базу данных.
Начните обход с курсора
0:text SCAN 0 [MATCH <шаблон>] [COUNT <количество>] [TYPE <тип>]В команде:
MATCH <шаблон>— отобрать имена по шаблону.COUNT <количество>— задать ориентир объема работы за один вызов, положительное целое число. Это не ограничение количества результатов.
Команда вернет следующий курсор и список найденных ключей.
Подставляйте полученный курсор в следующий вызов, сохраняя условия отбора:
text SCAN <курсор> [MATCH <шаблон>] [COUNT <количество>] [TYPE <тип>]Обход завершится, когда команда вернет курсор
0. Пустой список при ненулевом курсоре не означает завершение. Ключи будут возвращаться без гарантии уникальности и порядка. При изменении базы во время обхода результат не будет снимком ее состояния на один момент времени.
Получить случайный ключ
Заголовок раздела «Получить случайный ключ»Чтобы получить имя случайного ключа, используйте команду RANDOMKEY.
Подключитесь к кластеру.
Переключитесь на нужную базу данных.
Выполните команду:
text RANDOMKEYКоманда вернет имя случайного ключа из текущей базы данных. Ключ и его значение сохранятся. Если база данных пуста, команда вернет
nil.
Сериализовать и восстановить значение
Заголовок раздела «Сериализовать и восстановить значение»Чтобы сериализовать и восстановить значение ключа, используйте команды:
Для использования команды RESTORE у пользователя должны быть права на ее выполнение или выполнение команд категории dangerous.
Подключитесь к кластеру.
Переключитесь на нужную базу данных.
Узнайте имя ключа с помощью итеративного обхода.
Получите сериализованное значение:
text DUMP <имя исходного ключа>Команда вернет бинарное представление значения. Если ключ не существует, команда вернет
nil, и восстановление выполнять не нужно.Подготовьте полученное значение к передаче в
RESTOREбез изменения байтов.Выберите срок жизни целевого ключа. Для ключа без срока жизни используйте
0.DUMPне сохранит срок жизни исходного ключа. Если нужно задать срок на основе исходного ключа, узнайте его оставшееся время в текущей базе данных. Положительный ответ можно использовать как новый срок жизни. Он будет отсчитан с момента восстановления, и исходный момент истечения не сохранится. Для ключа без срока жизни при ответе-1, используйте0. При ответе-2или0исходный ключ уже отсутствует или его срок заканчивается — прекратите перенос. Раздельные вызовыDUMPиPTTLне обеспечат согласованный снимок при изменении ключа.Если нужно восстановить значение в другой базе данных, переключитесь на нее. Выполните команду:
text RESTORE <имя целевого ключа> <срок жизни> <сериализованное значение> [REPLACE]В команде:
<срок жизни>— неотрицательное целое число миллисекунд. Значение0создаст ключ без срока жизни.<сериализованное значение>— полный ответDUMP, переданный как один бинарный аргумент.REPLACE— перезаписать существующий целевой ключ.
Команда создаст целевой ключ и вернет
OK. Если целевой ключ существует, но параметрREPLACEне указан, команда вернет ошибку. При поврежденных данных или несовместимом формате сериализации также вернется ошибка.
Передать результат DUMP в RESTORE через valkey-cli
Заголовок раздела «Передать результат DUMP в RESTORE через valkey-cli»Чтобы передать бинарное значение из команды DUMP в команду RESTORE вручную, используйте интерактивный режим valkey-cli с выводом в кавычках. Правила экранирования описаны в официальной документации клиента.
Подключитесь к кластеру.
Переключитесь на нужную базу данных.
Узнайте имя ключа с помощью итеративного обхода.
Выполните команду в интерактивном режиме
valkey-cliс обычным выводом, без режима--raw:text DUMP <имя исходного ключа>Клиент выведет значение в двойных кавычках, а непечатаемые байты представит последовательностями вида
\xHH. Если вернетсяnil, исходный ключ отсутствует и передавать значение не нужно.Скопируйте полный ответ вместе с внешними двойными кавычками.
Подставьте скопированный ответ вместо сериализованного значения в команду
RESTORE. Выполняйте команду в интерактивномvalkey-cli, а не в командной оболочке операционной системы.valkey-cliпреобразует экранированную строку в исходные байты и передаст ее серверу как один аргумент. Результат восстановления будет определяться параметрамиRESTORE.
Удалить ключ
Заголовок раздела «Удалить ключ»Чтобы удалить один или несколько ключей, используйте команду DEL.
Подключитесь к кластеру.
Переключитесь на нужную базу данных.
Узнайте имя ключа с помощью итеративного обхода.
Выполните команду:
text DEL <имя ключа 1> [<имя ключа 2> ...]Команда удалит указанные ключи вместе с их значениями и вернет количество удаленных ключей. Несуществующие ключи будут пропущены. Если ни один из указанных ключей не существует, команда вернет
0.