Поддерживаемые команды¶
Управление доступом¶
Управление доступом в Radix реализовано с помощью списков контроля доступа (access control lists, ACL). С их помощью администратор может ограничить доступ пользователей к определённым ключам и их значениям. Команды сгруппированы в категории, что позволяет назначать пользователям сразу нужные наборы прав доступа.
Реализованные в Radix ACL-команды и их категории описаны ниже.
Категории ACL¶
В Radix используются следующие ACL-категории для команд:
- admin — административные команды. Пользователям, работающим с данными БД, они обычно не нужны
- blocking — команды, блокирующие выполнение других команд
- dangerous — потенциально опасные команды (с точки зрения сохранности данных)
- connection — команды, имеющие отношение к управлению соединениями
- fast — команды быстрого выполнения, на скорость которых не влияет количество элементов, хранящихся в целевом ключе
- hash — все команды, имеющие отношение к работе с хэшем
- keyspace — команды, работающие со значениями ключей
- list — команды для работы со списками
- pico — команды, специфичные для Picodata
- pubsub — все команды, имеющие отношение к pubsub
- read — команды, читающие данные из ключей
- set — команды, устанавливающие значения
- scripting — команды для работы со скриптами
- slow — команды медленного выполнения
- sortedset — команды, имеющие отношение к сортированным множествам
- string — команды, работающие со строковыми данными
- transaction — команды для работы с транзакциями
- write — команды, записывающие данные в ключи
acl cat¶
ACL CAT [category]
При использовании без дополнительных аргументов, данная команда выводит список доступных категорий. При указании в качестве аргумента конкретной категории, команда выведет список команд, входящих в неё.
acl dryrun¶
ACL DRYRUN username command [arg [arg ...]]
Симулирует выполнение команды пользователем. DRYRUN удобен для
проверки того, что у пользователя достаточно прав на выполнение
указанной команды.
Пример:
> ACL SETUSER VIRGINIA +SET ~*
"OK"
> ACL DRYRUN VIRGINIA SET foo bar
"OK"
> ACL DRYRUN VIRGINIA GET foo
"User VIRGINIA has no permissions to run the 'get' command
acl getuser¶
ACL GETUSER username
Возвращает все доступные ACL-данные для указанного пользователя (флаги, хэши паролей, разрешённые команды и т.д.).
acl list¶
ACL LIST
Возвращает список всех пользователей (кроме служебных
guest/admin/pico-service) с сопоставленными им правилами. Если для
пользователя ACL не заданы, то используются правила по умолчанию
(запрещены все команды/ключи/каналы).
acl load¶
ACL LOAD
Загружает на сервер Radix набор ACL-правил, определённых в файле
aclfile (задаётся в разделе authorization_mode
конфигурации Radix). Существующие правила ACL переписываются (сначала
удаляются все заданные правила ACL, а потом загружаются из файла).
Внимание!
ACL-файлы из Redis необходимо предварительно отредактировать. См. подробнее.
acl log¶
ACL LOG [count | RESET]
Выводит журнал последних событий, связанных с доступом к данным, включая:
- ошибки авторизации (например, при AUTH)
- ошибки выполнения команд из-за недостатка прав
Недавние записи находятся в начале списка. Параметр count позволяет
указать количество выводимых записей (по умолчанию 10). Параметр
RESET позволяет очистить журнал.
acl save¶
ACL SAVE
Записывает текущие ACL-правила на сервере Radix в aclfile. Для работы
этой команды необходимо настроить расположение файла aclfile задаётся
в разделе authorization_mode конфигурации Radix).
Внимание!
Формат ACL-файла в Radix соответствует формату
Redis. Перед загрузкой этого файла командой ACL LOAD его необходимо
предварительно отредактировать. См. подробнее.
acl setuser¶
ACL SETUSER username [rule [rule ...]]
Задаёт набор правил ACL для существующего пользователя Picodata. Если пользователю ранее были заданы правила ACL, то данная команда добавит новые правила к существующему списку, не затирая его.
Пример:
ACL SETUSER virginia on allkeys +set
ACL SETUSER virginia +get
> ACL LIST
1) "user virginia on -@allkeys +set +get"
Список доступных правил для работы с данными:
~<pattern>— добавляет указанный шаблон ключа в список шаблонов ключей, доступных пользователю. Это предоставляет права как на чтение, так и на запись для ключей, соответствующих данному шаблону. Можно добавить несколько шаблонов ключей для одного и того же пользователя. Пример:~objects:*%R~<pattern>— добавляет указанный шаблон ключа для чтения. Он работает аналогично обычному шаблону ключа, но предоставляет права только на чтение из ключей, соответствующих данному шаблону%W~<pattern>— добавляет указанный шаблон записи ключей. Он работает аналогично обычному шаблону ключей, но предоставляет разрешение на запись только в те ключи, которые соответствуют данному шаблону%RW~<pattern>— аналогичен~<pattern>allkeys— предоставляет доступ ко всем ключам, аналогичен~*resetkeys— очищает все шаблоны ключей, ранее назначенные пользователю&<pattern>— добавляет указанный шаблон в стиле glob в список шаблонов каналов Pub/Sub, доступных пользователю (подробнее)allchannels— предоставляет доступ ко всем каналам Pub/Sub, аналогичен&*resetchannels— очищает все шаблоны каналов, ранее назначенные пользователю+<command>— добавляет команду в список команд, которые пользователь может выполнять. Может использоваться с символом|для разрешения подкоманд (например,+config|get)+@<category>— добавляет категорию команд в список команд, которые пользователь может выполнять (например,+@string). Список категорий доступен по командеACL CATallcommands— добавляет все команды, имеющиеся на сервере, включая будущие команды, загружаемые через модули, для выполнения этим пользователем. Аналогичен+@all-<command>— удаляет команду из списка команд, которые пользователь может выполнять. Может использоваться с символом|для блокирования подкоманд (например,-config|set)-@<category>— действует противоположно+<category>, то есть, удаляет все команды категории из списка команд, которые пользователь может выполнять.nocommands— удаляет все права пользователя, лишая его возможности что-либо выполнять. Аналогичен-@all(<rule list>)— создаёт новый селектор для сопоставления правил. Селекторы применяются после прав пользователя и в том порядке, в котором они перечислены. Если команда соответствует либо правам пользователя, либо любому селектору, она разрешенаclearselectors— удаляет все селекторы, привязанные к пользователюreset— удаляет все правила работы с данными у пользователя. Они устанавливаются в состояние «выключено»: без паролей, без возможности выполнять какие-либо команды и без доступа к каким-либо ключам
acl users¶
ACL USERS
Выводит список пользователей и их ACL.
acl whoami¶
ACL WHOAMI
Выводит список текущего (прошедшего авторизацию) пользователя.
Управление кластером¶
cluster getkeysinslot¶
CLUSTER GETKEYSINSLOT slot count
Возвращает набор ключей, которые, в соответствии со своими хэш-суммами, относятся к указанному слоту. Второй аргумент ограничивает максимальное количество возвращаемых ключей.
cluster info¶
CLUSTER INFO
Возвращает основной набор параметров кластера. Пример:
127.0.0.1:7301> cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:8
cluster_size:4
cluster_current_epoch:2
cluster_my_epoch:2
cluster_stats_messages_ping_sent:0
cluster_stats_messages_pong_sent:0
cluster_stats_messages_sent:0
cluster_stats_messages_ping_received:0
cluster_stats_messages_pong_received:0
cluster_stats_messages_meet_received:0
cluster_stats_messages_fail_received:0
cluster_stats_messages_received:0
cluster keyslot¶
CLUSTER KEYSLOT key
Позволяет узнать, к какому хэш-слоту относится указанный в команде ключ.
cluster myid¶
CLUSTER MYID
Возвращает идентификатор текущего узла кластера (INSTANCE UUID).
cluster myshardid¶
CLUSTER MYSHARDID
Возвращает идентификатор текущего репликасета, в который входит текущий узел кластера (REPLICASET UUID).
cluster nodes¶
CLUSTER NODES
Возвращает информацию о текущем составе и конфигурации узлов кластера, включая номера бакетов, относящихся к узлам.
cluster replicas¶
CLUSTER REPLICAS node-id
Возвращает состав реплицированных узлов (т.е. состав репликасета)
cluster shards¶
CLUSTER SHARDS
Возвращает подробную информацию о шардах кластера.
cluster slots¶
CLUSTER SLOTS
Возвращает информацию о соответствии слотов инстансам кластера.
echo¶
ECHO message
Возвращает сообщение (message).
ping¶
PING [message]
Возвращает PONG, если аргумент не указан, в противном случае
возвращает строкой аргумент, который пришёл. Эта команда полезна для:
- проверки того, живо ли ещё соединение
- проверки способности сервера обслуживать данные — ошибка возвращается, если это не так (например, при загрузке из постоянного хранилища или обращении к устаревшей реплике)
- измерения задержки
quit¶
QUIT
Отправляет серверу сигнал на закрытие соединения. Сервер исполнит запрос после того как будут отправлены все ответы на уже обработанные запросы. Данная команда относится к числу устаревших и не рекомендуется к использованию — более правильно разрывать соединение на стороне клиента когда оно больше не требуется.
Примечание
Данная команда отнесена в Redis в разряд устаревших и по умолчанию отключена в Radix. Для включения используйте следующий SQL-запрос:
ALTER PLUGIN radix 1.1.1 SET radix.redis_compatibility = '{ "enforce_one_slot_transactions": true, "push_result_includes_popped_items": true, "include_radix_section_in_info_by_default": true, "disable_scatter_gather": true, "enabled_deprecated_commands": ["quit" ] }';
readonly¶
READONLY
Переводит сессию в режим, в котором получение данных производится не с лидеров репликасетов, а с резервных реплик (при факторе репликации ≥ 2).
Управление соединениями¶
auth¶
AUTH password
Выполняет аутентификацию пользователя по умолчанию. Имя пользователя по
умолчанию должно быть задано в конфигурации плагина в параметре
default_user_name.
auth username password
Выполняет аутентификацию выбранного пользователя.
client getname¶
CLIENT GETNAME
Возвращает имя соединения, заданное командой CLIENT
SETNAME. Если имя не было задано, будет возвращено
значение nil.
client help¶
CLIENT HELP
Возвращает список поддерживаемых команд группы CLIENT ... и их краткое
описание.
client id¶
CLIENT ID
Возвращает идентификатор текущего соединения. Это полезно в следующих случаях:
- получение одного и того же идентификатора в разных запросах гарантирует, что соединение не обрывалось между ними
- большее значение идентификатора гарантирует более позднее время создания соединения
client info¶
CLIENT INFO
Возвращает подробное описание текущего соединения.
client kill¶
CLIENT KILL <ip:port | <[ID client-id] | [TYPE <NORMAL | MASTER |
SLAVE | REPLICA | PUBSUB>] | [USER username] | [ADDR ip:port] |
[LADDR ip:port] | [SKIPME <YES | NO>] | [MAXAGE maxage]
[[ID client-id] | [TYPE <NORMAL | MASTER | SLAVE | REPLICA |
PUBSUB>] | [USER username] | [ADDR ip:port] | [LADDR ip:port] |
[SKIPME <YES | NO>] | [MAXAGE maxage] ...]>>
Закрывает указанное клиентское соединение. Команда поддерживает два формата. Старый формат:
CLIENT KILL ip:port
Значение ip:port должно совпадать с одной из строк, которые возвращает
команда CLIENT LIST в поле addr.
Новый формат:
CLIENT KILL <filter> <value> ... ... <filter> <value>
В новом формате можно закрывать клиентские соединения по разным атрибутам, а
не только по адресу. Можно указать несколько фильтров одновременно. В этом
случае они объединяются логическим AND.
CLIENT KILL ADDR 127.0.0.1:12345 TYPE PUBSUB
Этот запрос закроет только клиентское соединение типа pubsub с указанным
адресом. При использовании нового формата команда возвращает не OK или
ошибку, а количество закрытых клиентских соединений. Это число может быть
равно нулю.
Параметры и варианты использования:
ip:port— закрывает клиентское соединение по указанному адресу. Это устаревший формат с одним аргументом.ID client-id— закрывает только клиентское соединение с указанным уникальным идентификатором.TYPE NORMAL | MASTER | SLAVE | REPLICA | PUBSUB— закрывает только клиентские соединения указанного типа.USER username— закрывает только клиентские соединения, аутентифицированные как указанный пользователь ACL.ADDR ip:port— закрывает только клиентские соединения с указанного адреса.LADDR ip:port— закрывает только клиентские соединения, подключенные к указанному локальному адресу сервера.SKIPME YES | NO— определяет, нужно ли пропускать клиента, который вызвал команду. ЗначениеYESиспользуется по умолчанию и пропускает вызывающего клиента. ЗначениеNOразрешает закрыть и его соединение.MAXAGE maxage— закрывает только клиентские соединения, возраст которых превышает указанное значение в секундах.
client list¶
CLIENT LIST [TYPE <NORMAL | MASTER | REPLICA | PUBSUB>]
[ID client-id [client-id ...]]
Выводит список клиентских соединений.
Параметры и варианты использования:
TYPE NORMAL | MASTER | REPLICA | PUBSUB— выводит только клиентские соединения указанного типа.ID client-id [client-id ...]— выводит только клиентские соединения с указанными идентификаторами.
Подробности:
Результат содержит сведения и статистику по клиентским соединениям. В выводе могут быть следующие поля:
id— уникальный 64-битный идентификатор клиентаaddr— адрес и порт клиентаname— имя, заданное клиентом командой CLIENT SETNAMEage— общее время существования соединения в секундахidle— время простоя соединения в секундахflags— флаги клиента (см. ниже)db— идентификатор текущей базы данныхsub— количество подписок на каналыpsub— количество подписок по шаблонуssub— количество подписок на шардированные каналыmulti— количество команд в контекстеMULTI/EXECuser— имя пользователя, под которым клиент аутентифицированlib-name— имя используемой клиентской библиотекиlib-ver— версия клиентской библиотеки
Флаги клиента могут быть скомбинированы из следующих значений:
b— клиент ожидает в блокирующей операцииN— специальные флаги не установленыP— клиент является подписчиком Pub/Subr— клиент работает в режимеreadonlyпри обращении к узлу кластераS— клиент является соединением реплики с этим экземпляромt— у клиента включено отслеживание ключей для клиентского кэширования
client no-evict¶
CLIENT NO-EVICT <ON | OFF>
Управляет режимом вытеснения для текущего соединения. Если режим включён и вытеснение клиентов настроено, текущее соединение исключается из процесса вытеснения, даже когда превышен заданный порог. Если режим выключен, клиент снова попадает в набор соединений, которые могут быть вытеснены.
Параметры и варианты использования:
ON— включает защиту текущего соединения от вытеснения.OFF— выключает защиту текущего соединения от вытеснения.
client no-touch¶
CLIENT NO-TOUCH <ON | OFF>
Управляет тем, будут ли команды текущего клиента изменять статистику LRU/LFU для ключей, к которым обращаются.
Параметры и варианты использования:
ON— отключает обновление времени последнего обращения к ключам и счетчика LFU для команд этого соединения. Исключение составляет командаTOUCH.OFF— включает обычное обновление статистики LRU/LFU для команд этого соединения.
client pause¶
CLIENT PAUSE timeout [WRITE | ALL]
Приостанавливает обработку команд клиентов на указанное время в миллисекундах.
Параметры и варианты использования:
timeout— время приостановки клиентов в миллисекундах.ALL— режим по умолчанию, при котором блокируются все команды клиентов.WRITE— режим, при котором клиенты блокируются только при попытке выполнить команду записи.
Подробности:
- Команда останавливает обработку ожидающих команд обычных клиентов и клиентов Pub/Sub для указанного режима. Взаимодействие с репликами продолжается в обычном режиме. Клиент формально считается приостановленным, когда пытается выполнить команду, поэтому для неактивных клиентов сервер не выполняет дополнительную работу.
- Команда как можно быстрее возвращает
OKвызывающему клиенту, поэтому само выполнениеCLIENT PAUSEне приостанавливается. - Когда указанное время истекает, все клиенты разблокируются, и сервер начинает обрабатывать команды, накопленные в буферах запросов во время паузы.
- В режиме
WRITEкомандыEVALиEVALSHAблокируют клиента для всех скриптов. КомандыPUBLISHиPFCOUNTтакже блокируют клиента. Для командыWAITподтверждения задерживаются, поэтому она выглядит заблокированной. - Команда полезна для управляемого переключения клиентов с одного
экземпляра Redis на другой. Например, при обновлении экземпляра
администратор может приостановить клиентов с помощью
CLIENT PAUSE, подождать, пока реплики обработают последний поток репликации от мастера, повысить одну из реплик до мастера и перенастроить клиентов на новый мастер. - Режим
WRITEостанавливает трафик репликации, может быть отменен командой CLIENT UNPAUSE и позволяет перенастроить старый мастер без риска принять записи после failover.
client reply¶
CLIENT REPLY <ON | OFF | SKIP>
Управляет тем, будет ли сервер отправлять ответы на команды клиента. Это полезно, когда клиент отправляет команды в режиме fire-and-forget, выполняет массовую загрузку данных или получает постоянный поток новых данных в сценариях кэширования.
Параметры и варианты использования:
ON— режим по умолчанию: сервер возвращает ответ на каждую команду.OFF— сервер не отправляет ответы на команды клиента.SKIP— сервер пропускает ответ только для команды, которая идет сразу послеCLIENT REPLY SKIP.
client setinfo¶
CLIENT SETINFO <LIB-NAME libname | LIB-VER libver>
Задает информационные атрибуты текущего соединения. Эти атрибуты отображаются в выводе команд CLIENT LIST и CLIENT INFO. Клиентские библиотеки обычно отправляют эту команду в pipeline после аутентификации на каждом соединении и игнорируют ошибки, потому что могут быть подключены к серверу, который не поддерживает такие атрибуты.
Параметры и варианты использования:
LIB-NAME libname— задает имя клиентской библиотеки для текущего соединения.LIB-VER libver— задает версию клиентской библиотеки для текущего соединения.
Подробности:
- Длина этих атрибутов не ограничена, но в них нельзя использовать пробелы, переводы строк и другие непечатаемые символы, которые нарушили бы формат ответа CLIENT LIST.
- Официальные клиентские библиотеки могут расширять
lib-nameпользовательским суффиксом, чтобы передавать дополнительную информацию о клиенте. Например, высокоуровневые библиотеки могут сообщать свою версию, а итоговое значениеlib-nameможет выглядеть какjedis(redis-om-spring_v1.0.0). Фигурные скобки используются как разделители пользовательского суффикса, поэтому их не стоит использовать внутри самого суффикса. - Для пользовательских суффиксов сторонних библиотек рекомендуется
формат
(?<custom-name>[ -~]+)[ -~]v(?<custom-version>[\d\.]+). Несколько суффиксов можно разделять символом;. - Команда
RESETне очищает эти атрибуты.
client setname¶
CLIENT SETNAME connection-name
Задает имя для текущего соединения.
Параметры и варианты использования:
connection-name— имя, которое нужно назначить текущему соединению.
Подробности:
- Назначенное имя отображается в выводе CLIENT LIST, чтобы можно было определить клиента, открывшего конкретное соединение.
- Например, если Redis используется для реализации очереди, производители и потребители сообщений могут задавать имя соединения в соответствии со своей ролью.
- Длина имени ограничена только обычным пределом строк Redis, но в имени соединения нельзя использовать пробелы, потому что это нарушит формат ответа CLIENT LIST.
- Чтобы полностью удалить имя соединения, задайте пустую строку. Пустая строка не является допустимым именем соединения и используется специально для удаления имени.
- Имя соединения можно проверить командой CLIENT GETNAME. Новые соединения создаются без имени.
- Имена соединений помогают отлаживать утечки соединений, вызванные ошибками в приложении.
client unblock¶
CLIENT UNBLOCK client-id [TIMEOUT | ERROR]
Разблокирует клиент, который заблокирован блокирующей операцией, например
BRPOP или WAIT.
Параметры и варианты использования:
client-id— идентификатор клиента, которого нужно разблокировать.TIMEOUT— поведение по умолчанию: разблокировать клиента так, как если бы истек таймаут заблокированной команды.ERROR— разблокировать клиента с ошибкой-UNBLOCKED.
Подробности:
- Используйте эту команду, когда нужно отслеживать много ключей ограниченным числом соединений. Если процессу-потребителю нужно начать отслеживать еще один поток (stream), можно не открывать новое соединение: разблокируйте одно из соединений в пуле, добавьте новый ключ и снова выполните блокирующую команду.
- Для такого сценария создайте дополнительное управляющее соединение, которое
будет отправлять
CLIENT UNBLOCKпри необходимости. Перед запуском блокирующей операции на каждом отслеживаемом соединении выполнитеCLIENT ID, чтобы получить идентификатор этого соединения. Когда нужно добавить или удалить ключ, используйте управляющее соединение, чтобы отправитьCLIENT UNBLOCKдля соединения с блокирующей командой. Блокирующая команда вернется, после чего ее можно выполнить снова с обновленным набором ключей.
Пример:
-- Соединение A (блокирующее соединение):
CLIENT ID
2934
BRPOP key1 key2 key3 0
-- клиент заблокирован
-- Нужно добавить новый ключ.
-- Соединение B (управляющее соединение):
CLIENT UNBLOCK 2934
1
-- Соединение A (блокирующее соединение):
-- BRPOP возвращает таймаут.
NULL
BRPOP key1 key2 key3 key4 0
-- клиент снова заблокирован
client unpause¶
CLIENT UNPAUSE
Возобновляет обработку команд для всех клиентов, которые были приостановлены командой CLIENT PAUSE.
hello¶
HELLO [protover [AUTH username password] [SETNAME clientname]]
Возвращает подробности о сервере и подключении. Параметр protover
позволяет задать версию протокола RESP (2 или 3). На данный момент Radix
поддерживает только версию 2. Параметр AUTH позволяет явно указать имя
и пароль пользователя, под которым производится подключение. Параметр
SETNAME позволяет задать имя клиента (аналогично команде CLIENT
SETNAME).
reset¶
RESET
Сбрасывает соединение в состояние по умолчанию:
- откатывается текущая транзакция, если она была открыта,
- сбрасываются наблюдения за ключами, которые раньше были установлены командой WATCH,
- если были открыты курсоры командами SCAN/HSCAN, то они закрываются,
- сбрасывается авторизация, потребуется её пройти заново.
select¶
SELECT index
Получение логической базы данных Redis с указанным нулевым числовым индексом. Новые соединения всегда используют базу данных 0.
Общие команды¶
dbsize¶
DBSIZE
Возвращает количество ключей в базе данных
del¶
DEL key [key ...]
Удаляет указанные ключи. Несуществующие ключи игнорируются.
exists¶
EXISTS key [key ...]
Проверяет, существует ли указанный ключ key и возвращает число совпадений.
Например, запрос EXISTS somekey somekey вернёт 2.
expire¶
EXPIRE key seconds [NX | XX | GT | LT]
Устанавливает срок жизни (таймаут) для ключа key в секундах (TTL, time
to live). По истечении таймаута ключ будет автоматически удален. В
терминологии Redis ключ с установленным тайм-аутом часто называют
волатильным.
Тайм-аут будет сброшен только командами, которые удаляют или перезаписывают содержимое ключа, включая DEL, SET и GET/SET. Это означает, что все операции, которые концептуально изменяют значение, хранящееся в ключе, не заменяя его новым, оставляют таймаут нетронутым.
expireat¶
EXPIREAT key unix-time-seconds [NX | XX | GT | LT]
Устанавливает срок жизни (таймаут) для ключа key подобно
EXPIRE, но вместо оставшегося числа секунд (TTL, time to
live) использует абсолютное время Unix timestamp — число секунд,
прошедших с 01.01.1970. Если максимальное число секунд превышено (т.е.
дата отсчёта находится ранее 01.01.1970), то ключ будет автоматически
удален.
Дополнительные параметры EXPIREAT:
NX— установить срок жизни только если он не был ранее установленXX— установить срок жизни только если ключ уже имеет ранее установленный срокGT— установить срок жизни только если он превышает ранее установленный срокLT— установить срок жизни только если он меньше ранее установленного срока
expiretime¶
EXPIRETIME key
Возвращает срок жизни (таймаут) ключа key в секундах согласно формату
Unix timestamp.
keys¶
KEYS pattern
Возвращает все ключи, соответствующие шаблону.
Поддерживаются шаблоны в стиле glob:
h?lloсоответствует hello, hallo и hxlloh*lloсоответствует hllo и heeeelloh[ae]lloсоответствует hello и hallo, но не hilloh[^e]lloсоответствует hallo, hbllo, ... но не helloh[a-b]lloсоответствует hallo и hbllo
persist¶
PERSIST key
Удаляет существующий таймаут для ключа key, превращая его из непостоянного
(ключ с установленным сроком действия) в постоянный (ключ, срок действия
которого никогда не истечёт, поскольку таймаут для него не установлен).
pexpire¶
PEXPIRE key milliseconds [NX | XX | GT | LT]
Устанавливает срок жизни (таймаут) для ключа key подобно
EXPIRE, но в миллисекундах.
pexpireat¶
PEXPIREAT key unix-time-milliseconds [NX | XX | GT | LT]
Устанавливает срок жизни (таймаут) для ключа key подобно
EXPIREAT, но в миллисекундах.
pexpiretime¶
PEXPIRETIME key
Возвращает срок жизни (таймаут) ключа key подобно
EXPIRETIME, но в миллисекундах.
pttl¶
PTTL key
Возвращает оставшееся время жизни ключа key подобно TTL, но в
миллисекундах.
scan¶
SCAN cursor [MATCH pattern] [COUNT count] [TYPE type]
Команда SCAN используется для инкрементного итерационного просмотра
коллекции элементов в выбранной в данный момент базе данных Redis.
ttl¶
TTL key
Возвращает оставшееся время жизни ключа key, для которого установлен
таймаут. Эта возможность интроспекции позволяет клиенту Redis проверить,
сколько секунд данный ключ будет оставаться частью набора данных.
Команда возвращает -2, если ключ не существует.
Команда возвращает -1, если ключ существует, но не имеет связанного с
ним истечения срока действия.
type¶
TYPE key
Возвращает строковое представление типа значения, хранящегося по адресу
ключа key. Могут быть возвращены следующие типы:
stringlistsetzsethashstream
unlink¶
UNLINK key [key ...]
Выполняет асинхронное удаление ключей. Работает точно также, как и DEL,
за исключением того, что фактическое удаление данных происходит в фоне.
Можно использовать для повышения отзывчивости приложения.
Хэш-команды¶
hdel¶
HDEL key field [field ...]
Удаляет указанные поля из хэша, хранящегося по адресу ключа key.
Указанные поля, которые не существуют в этом хэше, игнорируются. Удаляет
хэш, если в нем не осталось полей. Если key не существует, он
рассматривается как пустой хэш, и эта команда возвращает 0.
hexists¶
HEXISTS key field
Возвращает, является ли поле field существующим полем в хэше, хранящемся по
адресу ключа key.
hget¶
HGET key field
Возвращает значение, связанное с полем field в хэше, хранящемся по
адресу ключа key.
hgetall¶
HGETALL key
Возвращает все поля и значения хэша, хранящегося по адресу ключа key. В
возвращаемом значении за именем каждого поля следует его значение,
поэтому длина ответа будет в два раза больше размера хэша.
hincrby¶
HINCRBY key field increment
Увеличивает число, хранящееся в поле field, в хэше, хранящемся в ключе
key, на инкремент. Если ключ не существует, создаётся новый ключ,
содержащий хэш. Если поле не существует, то перед выполнением операции
его значение устанавливается в 0.
Диапазон значений, поддерживаемых HINCRBY, ограничен 64-битными
знаковыми целыми числами.
hkeys¶
HKEYS key
Возвращает все имена полей в хэше, хранящемся по адресу ключа key.
hlen¶
HLEN key
Возвращает количество полей, содержащихся в хэше, хранящемся по адресу
ключа key.
hmget¶
HMGET key field [field ...]
Возвращает значения указанных полей из хэша.
hmset¶
HMSET key field value [field value ...]
Выставляет значения указанным полям для заданного хэша.
Примечание
Вместо этой команды необходимо использовать команду HSET
Данная команда отнесена в Redis в разряд
устаревших и по умолчанию отключена в Radix. Для включения
используйте следующий SQL-запрос:
ALTER PLUGIN radix 1.1.1 SET radix.redis_compatibility = '{ "enforce_one_slot_transactions": true, "push_result_includes_popped_items": true, "include_radix_section_in_info_by_default": true, "disable_scatter_gather": true, "enabled_deprecated_commands": ["hmset" ] }';
hscan¶
HSCAN key cursor [MATCH pattern] [COUNT count] [NOVALUES]
Работает подобно SCAN, но с некоторым отличием: HSCAN
выполняет итерацию полей типа Hash и связанных с ними значений.
hset¶
HSET key field value [field value ...]
Устанавливает указанные поля в соответствующие им значения в хэше,
хранящемся по адресу ключа key.
Эта команда перезаписывает значения указанных полей, которые существуют в хэше. Если ключ не существует, создаётся новый ключ, содержащий хэш.
hvals¶
HVALS key
Возвращает значения всех полей в хэше, хранящиеся по адресу ключа key.
Команды для множеств¶
sadd¶
SADD key member [member ...]
Добавляет указанные элементы (member) к множеству, хранящемуся по
ключу key. Если такие элементы уже есть, они будут проигнорированы.
Если указанного ключа key нет, он будет создан, а элементы — добавлены
в новое множество. Если ключ key существует, но хранящееся в нем
значение не является множеством, команда вернёт ошибку.
scard¶
SCARD key
Возвращает мощность множества (количество элементов), хранящегося по
ключу key.
sdiff¶
SDIFF key [key ...]
Работает аналогично SDIFFSTORE, но вместо записи результирующего множества выводит его клиенту.
sdiffstore¶
SDIFFSTORE destination key [key ...]
Вычисляет разницу между первым и последующими множествами (хранящимися в
соответствующих ключах key) и записывает его в destination. Команда
выводит количество элементов в результирующем множестве. Несуществующий
ключ обрабатывается как ключ, содержащий пустое множество. Если целевое
множество в destination уже существует, оно будет перезаписано.
Примеры:
127.0.0.1:7379> SADD key1 "a"
(integer) 1
127.0.0.1:7379> SADD key1 "b"
(integer) 1
127.0.0.1:7379> SADD key1 "c"
(integer) 1
127.0.0.1:7379> SADD key2 "c"
(integer) 1
127.0.0.1:7379> SADD key2 "d"
(integer) 1
127.0.0.1:7379> SADD key2 "e"
(integer) 1
127.0.0.1:7379> SDIFFSTORE key key1 key2
(integer) 2
127.0.0.1:7379> SMEMBERS key
1) "a"
2) "b"
127.0.0.1:7379>
sinter¶
SINTER key [key ...]
Работает аналогично SINTERSTORE, но вместо записи результирующего множества выводит его клиенту.
sintercard¶
SINTERCARD numkeys key [key ...] [LIMIT limit]
Работает аналогично SINTER, но выводит клиенту не само
множество, а только его мощность. Если указан несуществующий ключ key,
то он будет обработан как пустое множество. Если из нескольких указанных
ключей хотя бы один будет содержать пустое множество, то и
результирующее пересечение также будет пустым.
Дополнительный параметр LIMIT позволяет ограничить показатель мощности
явно заданным числом. По умолчанию, ограничение не используется (LIMIT
равен 0).
sinterstore¶
SINTERSTORE destination key [key ...]
Вычисляет пересечение элементов из двух или более множеств,
хранящихся по указанным ключам (key) в виде нового
множества и записывает его в destination. Команда
выводит количество элементов в результирующем множестве.
Пример:
127.0.0.1:7379> SADD key1 "a"
(integer) 1
127.0.0.1:7379> SADD key1 "b"
(integer) 1
127.0.0.1:7379> SADD key1 "c"
(integer) 1
127.0.0.1:7379> SADD key2 "c"
(integer) 1
127.0.0.1:7379> SADD key2 "d"
(integer) 1
127.0.0.1:7379> SADD key2 "e"
(integer) 1
127.0.0.1:7379> SINTERSTORE key key1 key2
(integer) 1
127.0.0.1:7379> SMEMBERS key
1) "c"
127.0.0.1:7379>
sismember¶
SISMEMBER key member
Возвращает признак присутствия элемента в указанном множестве. В выводе
будет 1 или 0, соответственно.
smembers¶
SMEMBERS key
Возвращает список всех элементов, хранящихся в указанном множестве.
smove¶
SMOVE source destination member
Перемещает элемент из исходного множества (source) в целевое
(destination). Операция является атомарной. В любой момент времени
элемент будет отображаться как элемент источника или назначения для
других клиентов. Если исходное множество не существует или не содержит
указанный элемент, операция не выполняется и возвращается значение 0. В
противном случае элемент удаляется из исходного множества и добавляется
в целевое. Если указанный элемент уже существует в целевом множестве, он
удаляется из исходного множества.
spop¶
SPOP key [count]
Извлекает один или несколько элементов (согласно числу, указанному в
count), хранящихся в множестве по указанному ключу. Если count не
указан, то по умолчанию команда извлечёт один элемент.
srandmember¶
SRANDMEMBER key [count]
Возвращает случайный элемент из множества, хранящегося по ключу key.
Дополнительный параметр count позволяет указать количество выводимых
элементов.
Если count положителен, команда возвращает массив различных элементов.
Длина массива равна count или мощности множества (SCARD), в
зависимости от того, какое из этих значений меньше.
При вызове с отрицательным значением count поведение меняется, и
команда может возвращать один и тот же элемент несколько раз. В этом
случае количество возвращаемых элементов равно абсолютному значению
указанного count.
srem¶
SREM key member [member ...]
Удаляет указанные элементы из множества, хранящегося по ключу key.
Если указанный элемент отсутствует в множестве, то такой элемент
игнорируется. Если ключ key существует, но хранящееся в нем значение
не является множеством, команда вернёт ошибку.
sscan¶
SSCAN key cursor [MATCH pattern] [COUNT count]
См. SCAN
sunion¶
SUNION key [key ...]
Работает аналогично SUNIONSTORE, но вместо записи результирующего множества выводит его клиенту.
sunionstore¶
SUNIONSTORE destination key [key ...]
Вычисляет пересечение элементов из двух или более множеств,
хранящихся по указанным ключам (key) в виде нового
множества и записывает его в destination. Команда
выводит количество элементов в результирующем множестве. Если множество
в destination уже существует, оно будет перезаписано.
Пример:
127.0.0.1:7379> SADD key1 "a"
(integer) 1
127.0.0.1:7379> SADD key1 "b"
(integer) 1
127.0.0.1:7379> SADD key1 "c"
(integer) 1
127.0.0.1:7379> SADD key2 "c"
(integer) 1
127.0.0.1:7379> SADD key2 "d"
(integer) 1
127.0.0.1:7379> SADD key2 "e"
(integer) 1
127.0.0.1:7379> SUNIONSTORE key key1 key2
(integer) 5
127.0.0.1:7379> SMEMBERS key
1) "a"
2) "b"
3) "c"
4) "d"
5) "e"
Команды для сортированных множеств¶
bzmpop¶
BZMPOP timeout numkeys key [key ...] <MIN | MAX> [COUNT count]
Вариант команды ZMPOP с блокировкой. Ведёт себя аналогично ZMPOP в ситуации:
- когда хотя бы в одном из сортированных множеств, хранящихся по
указанным ключам (
key), есть элементы - при использовании внутри блока MULTI или EXEC.
Если все сортированные множества пусты, то Radix заблокирует соединение до
тех пор, пока другой клиент не добавит значение хотя бы к одному множеству в
указанных ключах key, либо не истечёт время таймаута timeout. Если
таймаут установить в 0, то блокировка будет бесконечной.
bzpopmax¶
BZPOPMAX key [key ...] timeout
Вариант команды ZPOPMAX с блокировкой. Ведёт себя так же как
ZPOPMAX, но при отсутствии элементов во всех сортированных множествах,
хранящихся по ключам key, блокирует соединение. В остальных случаях
возвращает один элемент с наивысшей оценкой из первого непустого ключа
из переданных в команду. Блокировка истекает после таймаута timeout.
Если таймаут установить в 0, то блокировка будет бесконечной.
bzpopmin¶
BZPOPMIN key [key ...] timeout
Вариант команды ZPOPMIN с блокировкой. Ведёт себя так же как
ZPOPMIN, но при отсутствии элементов во всех сортированных множествах,
хранящихся по ключам key, блокирует соединение. Возвращает один
элемент с наименьшей оценкой из первого непустого ключа из переданных в
команду. Блокировка истекает после таймаута timeout. Если таймаут
установить в 0, то блокировка будет бесконечной.
zadd¶
ZADD key [NX | XX] [GT | LT] [CH] [INCR] score member [score member ...]
Добавляет указанные элементы (member) и соответствующие им оценки
(score) к сортированному множеству, хранящемуся по ключу key. Если
указанного ключа key нет, он будет создан, а элементы — добавлены в
новое сортированное множество. Если ключ key существует, но в нем нет
сортированного множества, команда вернёт ошибку. Если указанный элемент
уже есть в сортированном множестве, то он будет вставлен повторно на ту
же позицию с обновленной оценкой.
Дополнительные параметры:
NX— только добавить новые элементы (существующие не обновлять)XX— только обновить существующие элементы (новые не добавлять)GT— обновить существующие элементы только если их новые оценки выше, а также добавить новые элементы (если указаны)LT— обновить существующие элементы только если их новые оценки ниже, а также добавить новые элементы (если указаны)CH— учитывать в выводе не только новые элементы, но и измененные. В таком случае команда вернёт число, отражающее сумму новых элементов и тех существующих элементов, для которых была обновлена оценка. Если указать в команде существующие элементы с их текущей оценкой, то они не будут учтены.INCR— заставляетZADDвести себя как ZINCRBY. В этом режиме можно указать только одну пару оценка/элемент.
Примечание
Параметры GT,LT и NX можно использовать
только по отдельности, не сочетая друг с другом.
zcard¶
ZCARD key
Возвращает мощность множества (количество элементов в сортированном
множестве), хранящегося по ключу key.
zcount¶
ZCOUNT key min max
Возвращает мощность множества (количество элементов в сортированном
множестве), хранящегося по ключу key, с оценкой в диапазоне от min до
max. Поведение аргументов min и max такое же, как в
ZREMRANGEBYSCORE.
zdiff¶
ZDIFF numkeys key [key ...] [WITHSCORES]
Работает аналогично ZDIFFSTORE, но вместо записи результирующего сортированного множества выводит его клиенту.
zdiffstore¶
ZDIFFSTORE destination numkeys key [key ...]
Вычисляет разницу между первым и последующими сортированными множествами
(хранящимися в соответствующих ключах key) и записывает его в
destination. Перед списком ключей необходимо указать их количество
(numkeys). Команда выводит количество элементов в результирующем
множестве. Несуществующий ключ обрабатывается как ключ, содержащий пустое
сортированное множество. Если целевое множество в destination уже
существует, оно будет перезаписано.
Примеры:
127.0.0.1:7379> ZADD zset1 1 "one"
(integer) 1
127.0.0.1:7379> ZADD zset1 2 "two"
(integer) 1
127.0.0.1:7379> ZADD zset1 3 "three"
(integer) 1
127.0.0.1:7379> ZADD zset2 1 "one"
(integer) 1
127.0.0.1:7379> ZADD zset2 2 "two"
(integer) 1
127.0.0.1:7379> ZDIFFSTORE out 2 zset1 zset2
(integer) 1
127.0.0.1:7379> ZRANGE out 0 -1 WITHSCORES
1) "three"
2) "3"
zincrby¶
ZINCRBY key increment member
Увеличивает оценку элемента member в сортированном множестве,
хранящемся по ключу key, на величину increment. Если указанный
элемент в множестве отсутствует, то он будет создан с оценкой, равной
increment. Если указанного ключа key нет, он будет создан, и элемент
добавлен в новое сортированное множество. Если ключ key существует, но
в нем нет сортированного множества, команда вернёт ошибку. Величина
increment может быть отрицательной (в таком случае оценка будет
понижена).
zinter¶
ZINTER numkeys key [key ...] [WEIGHTS weight [weight ...]]
[AGGREGATE <SUM | MIN | MAX>] [WITHSCORES]
Работает аналогично ZINTERSTORE, но вместо записи результирующего сортированного множества выводит его клиенту.
zintercard¶
ZINTERCARD numkeys key [key ...] [LIMIT limit]
Работает аналогично ZINTER, но вместо результирующего сортированного множества выводит только его мощность.
zinterstore¶
ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight
[weight ...]] [AGGREGATE <SUM | MIN | MAX>]
Вычисляет пересечение элементов из двух или более сортированных множеств,
хранящихся по указанным ключам (key) в виде нового сортированного
множества и записывает его в destination. Перед
списком ключей необходимо указать их количество (numkeys). Команда
выводит количество элементов в результирующем множестве.
По умолчанию, результирующая оценка элемента является суммой оценок этого элемента во всех исходных множествах, где он присутствует.
Дополнительные параметры WEIGHTS и AGGREGATE ведут себя так же, как
в команде ZUNIONSTORE.
Пример:
127.0.0.1:7379> ZADD zset1 1 "one"
(integer) 1
127.0.0.1:7379> ZADD zset1 2 "two"
(integer) 1
127.0.0.1:7379> ZADD zset2 1 "one"
(integer) 1
127.0.0.1:7379> ZADD zset2 2 "two"
(integer) 1
127.0.0.1:7379> ZADD zset2 3 "three"
(integer) 1
127.0.0.1:7379> ZINTERSTORE out 2 zset1 zset2 WEIGHTS 2 3
(integer) 2
127.0.0.1:7379> ZRANGE out 0 -1 WITHSCORES
1) "one"
2) "5"
3) "two"
4) "10"
zlexcount¶
ZLEXCOUNT key min max
Возвращает количество всех элементов из сортированного множества,
хранящегося по ключу key, в лексикографическом диапазоне от min до
max. Аргументы min и max применяются так же, как в команде
ZRANGEBYLEX.
zmpop¶
ZMPOP numkeys key [key ...] <MIN | MAX> [COUNT count]
Извлекает один или несколько элементов, составляющих пары
оценка/элемент, из первого непустого сортированного множества на основании
указанного набора ключей key.
Модификатор MIN позволяет выводить элементы с наименьшей оценкой,
MAX — с наивысшей. Параметр COUNT ограничивает число элементов (по
умолчанию — 1).
zmscore¶
ZMSCORE key member [member ...]
Возвращает оценки указанных элементов (member) сортированных множеств,
хранящихся по указанному ключу key. Если элемент отсутствует в
множестве, то для него будет выведена оценка nil.
zpopmax¶
ZPOPMAX key [count]
Извлекает указанное в count число элементов с наивысшей оценкой из
сортированного множества, хранящегося по указанному ключу. По умолчанию
count равен 1. Если указанный count больше мощности множества, то
ошибки не будет. Команда выводит элементы с сортировкой по убыванию
оценки.
zpopmin¶
ZPOPMIN key [count]
Извлекает указанное в count число элементов с наименьшей оценкой из
сортированного множества, хранящегося по указанному ключу. По умолчанию
count равен 1. Если указанный count больше мощности множества, то
ошибки не будет. Команда выводит элементы с сортировкой по возрастанию
оценки.
zrandmember¶
ZRANDMEMBER key [count [WITHSCORES]]
Возвращает случайный элемент из сортированного множества, хранящегося по
ключу key.
Дополнительный параметр count позволяет указать количество выводимых
элементов. Если добавить WITHSCORES, то в вывод будут включены оценки
элементов. Если указанный count положителен, то будет выведен массив
элементов размером либо с count, либо мощность множества (смотря какое
значение ниже). Если указанный count отрицателен, то поведение команды
меняется: один и тот же элемент может быть возвращен несколько раз.
Размер итогового массива при этом будет равняться абсолютному значению
count.
zrange¶
ZRANGE key start stop [BYSCORE | BYLEX] [REV] [LIMIT offset count]
[WITHSCORES]
Возвращает указанный набор элементов из сортированного множества,
хранящегося по ключу key. Команда может выполнять разные типы запросов,
выводя наборы элементов: по индексу, по оценке, в лексикографическом
порядке.
Следующие параметры меняют поведение команды:
BYSCORE— сортировка элементов по возрастанию их оценок. Элементы с одинаковыми оценками сортируются лексикографическиBYLEX— лексикографическая сортировка элементов с одинаковой оценкойREV— оценка элементов множества в обратном порядке
Дополнительный параметр LIMIT позволяет ограничить результат явно
заданными рамками (offset — смещение, count — число элементов).
Отрицательное значение count выведет все элементы после offset.
Дополнительный параметр WITHSCORES позволяет включить в вывод оценки
элементов.
Диапазоны индексов
По умолчанию команда выполняет запрос на основе индексов. Отрезок от
start до stop позволяет ограничить вывод элементов и обрабатывается
включительно (0 соответствует первому элементу). Например, команда
ZRANGE myzset 0 1 выведет только первый и второй элемент из множества
в ключе myzset. Отрицательные значения обозначают позицию относительно
конца множества (-1 — последний элемент). Индексы, выходящие за
пределы диапазона, не вызывают ошибку. Если start больше конечного
индекса сортированного множества или stop, возвращается пустой список.
Если stop больше конечного индекса сортированного множества, команда
будет использовать последний элемент сортированного множества.
Диапазоны оценок
Если указан параметр BYSCORE, команда ведёт себя как
ZRANGEBYSCORE и возвращает диапазон элементов из
сортированного множества, имеющих оценки, равные или лежащие между
start и stop.
start и stop могут быть -inf и +inf, обозначая отрицательную и
положительную бесконечность соответственно. Это означает, что вам не
нужно знать наивысшую или наименьшую оценку в сортированном множестве,
чтобы получить все элементы с определённой оценкой или выше.
По умолчанию интервалы оценок, указанные с помощью start и stop,
являются замкнутыми. Можно указать открытый интервал, добавив перед
оценкой символ (.
Например:
ZRANGE zset (1 5 BYSCORE
ZRANGE zset (5 (10 BYSCORE
Обратные диапазоны
Использование параметра REV обращает сортированное множество, при этом
индекс 0 будет относиться к элементу с наивысшей оценкой.
По умолчанию, чтобы вернуть какие-либо результаты, значение start
должно быть меньше или равно stop. Однако, если использован параметр
BYSCORE или BYLEX, значение start является наивысшей оценкой,
которую следует учитывать, а stop — наименьшей. Поэтому, чтобы вернуть
какие-либо результаты, значение start должно быть больше или равно
stop.
Например:
ZRANGE zset 5 10 REV
ZRANGE zset 10 5 REV BYSCORE
Лексикографические диапазоны
При использовании параметра BYLEX команда ведёт себя как
ZRANGEBYLEX и возвращает диапазон элементов из
сортированного множества между лексикографическими закрытыми интервалами
диапазона start и stop.
Обратите внимание, что лексикографическая сортировка ожидает, что оценки у всех элементов множества будут одинаковыми. Если элементы имеют разные оценки, то ответ может быть любым.
Допустимые значения start и stop должны начинаться с ( или [, чтобы
указать, является ли интервал диапазона открытым или замкнутым,
соответственно.
Специальные значения + или - для start и stop означают
положительные и отрицательные бесконечные строки, соответственно,
поэтому, например, команда ZRANGE myzset - + BYLEX гарантированно
возвращает все элементы в сортированном множестве (при условии, что все
элементы имеют одинаковую оценку).
Параметр REV меняет порядок элементов start и stop, где start
должен быть лексикографически больше stop, чтобы получить непустой
результат.
Лексикографическое сравнение строковых значений
Строки сравниваются как двоичный массив байтов. В случае с набором символов ASCII сравнение происходит обычным словарным способом.
Приложение сохраняет регистр символов, но не учитывает его при сравнении. Для сравнения используются строки, приведенные к нижнему регистру, для вывода результата — исходные значения.
Двоичная природа сравнения позволяет использовать сортированные множества в качестве индекса общего назначения, например, первая часть элемента может быть 64-разрядным числом в формате big-endian. Поскольку в числах big-endian наиболее значимые байты находятся в начальных позициях, двоичное сравнение будет соответствовать числовому сравнению чисел. Это можно использовать для реализации запросов по диапазону на 64-разрядных значениях. Как показано в примере ниже, после первых 8 байт мы можем хранить значение индексируемого элемента.
Пример:
> ZADD myzset 1 "one" 2 "two" 3 "three"
(integer) 3
> ZRANGE myzset 0 -1
1) "one"
2) "two"
3) "three"
> ZRANGE myzset 2 3
1) "three"
> ZRANGE myzset -2 -1
1) "two"
2) "three"
Дополнительные примеры:
127.0.0.1:7379> ZADD myzset 1 "one" 2 "two" 3 "three"
(integer) 3
127.0.0.1:7379> ZRANGE myzset 0 -1
1) "one"
2) "two"
3) "three"
127.0.0.1:7379> ZRANGE myzset 0 3 BYSCORE
1) "one"
2) "two"
3) "three"
127.0.0.1:7379> ZRANGE myzset 0 3 REV BYSCORE
1) "three"
2) "two"
3) "one"
127.0.0.1:7379> ZRANGE myzset 0 3 BYLEX
(empty array)
127.0.0.1:7379> ZRANGE myzset 0 3 BYSCORE LIMIT 1 1
1) "two"
2) "three"
zrangebylex¶
ZRANGEBYLEX key min max [LIMIT offset count]
Работает аналогично ZRANGE c параметром вывода BYLEX.
Примечание
Данная команда отнесена в Redis в разряд устаревших и по умолчанию отключена в Radix. Для включения используйте следующий SQL-запрос:
ALTER PLUGIN radix 1.1.1 SET radix.redis_compatibility = '{ "enforce_one_slot_transactions": true, "push_result_includes_popped_items": true, "include_radix_section_in_info_by_default": true, "disable_scatter_gather": true, "enabled_deprecated_commands": ["zrangebylex" ] }';
zrangebyscore¶
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
Работает аналогично ZRANGE c параметром вывода BYSCORE.
Примечание
Данная команда отнесена в Redis в разряд устаревших и по умолчанию отключена в Radix. Для включения используйте следующий SQL-запрос:
ALTER PLUGIN radix 1.1.1 SET radix.redis_compatibility = '{ "enforce_one_slot_transactions": true, "push_result_includes_popped_items": true, "include_radix_section_in_info_by_default": true, "disable_scatter_gather": true, "enabled_deprecated_commands": ["zrangebyscore" ] }';
zrangestore¶
ZRANGESTORE destination src min max [BYSCORE | BYLEX] [REV] [LIMIT offset count]
Работает аналогично ZRANGE, но вместо вывода
результирующего сортированного множества записывает его в destination.
zrank¶
ZRANK key member [WITHSCORE]
Возвращает позиции элемента (member) в сортированном множестве,
хранящемся по указанному ключу key, с сортировкой по возрастанию
оценки. Отсчёт начинается с 0.
Дополнительный параметр WITHSCORE добавляет в вывод команды сами оценки.
Для вывода позиций элементов по возрастанию оценки (включая в вывод сами оценки) используйте ZREVRANK.
zrem¶
ZREM key member [member ...]
Удаляет указанные элементы из сортированного множества, хранящегося по
ключу key. Если указанный элемент отсутствует в множестве, то такой
элемент игнорируется. Если ключ key существует, но в нем нет
сортированного множества, команда вернёт ошибку.
zremrangebylex¶
ZREMRANGEBYLEX key min max
Удаляет все элементы из сортированного множества, хранящегося по ключу
key, в лексикографическом диапазоне от min до max. Аргументы min
и max применяются так же, как в команде ZRANGEBYLEX.
zremrangebyrank¶
ZREMRANGEBYRANK key start stop
Удаляет все элементы из сортированного множества, хранящегося по
ключу key, с позиции в диапазоне от start до stop. Значение 0—
наиболее низкая позиция, -1 — наивысшая позиция, -2 — вторая после
наивысшей и т.д.
zremrangebyscore¶
ZREMRANGEBYSCORE key min max
Удаляет все элементы из сортированного множества, хранящегося по
ключу key, с оценкой в диапазоне от min до max включительно.
zrevrange¶
ZREVRANGE key start stop [WITHSCORES]
Работает аналогично ZRANGE c параметром вывода REV.
Примечание
Данная команда отнесена в Redis в разряд устаревших и по умолчанию отключена в Radix. Для включения используйте следующий SQL-запрос:
ALTER PLUGIN radix 1.1.1 SET radix.redis_compatibility = '{ "enforce_one_slot_transactions": true, "push_result_includes_popped_items": true, "include_radix_section_in_info_by_default": true, "disable_scatter_gather": true, "enabled_deprecated_commands": ["zrevrange" ] }';
zrevrangebylex¶
ZREVRANGEBYLEX key max min [LIMIT offset count]
Работает аналогично ZRANGE c параметрами вывода REV и BYLEX.
Примечание
Данная команда отнесена в Redis в разряд устаревших и по умолчанию отключена в Radix. Для включения используйте следующий SQL-запрос:
ALTER PLUGIN radix 1.1.1 SET radix.redis_compatibility = '{ "enforce_one_slot_transactions": true, "push_result_includes_popped_items": true, "include_radix_section_in_info_by_default": true, "disable_scatter_gather": true, "enabled_deprecated_commands": ["zrevrangebylex" ] }';
zrevrangebyscore¶
ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count]
Работает аналогично ZRANGE c параметрами вывода REV и BYSCORE.
Примечание
Данная команда отнесена в Redis в разряд устаревших и по умолчанию отключена в Radix. Для включения используйте следующий SQL-запрос:
ALTER PLUGIN radix 1.1.1 SET radix.redis_compatibility = '{ "enforce_one_slot_transactions": true, "push_result_includes_popped_items": true, "include_radix_section_in_info_by_default": true, "disable_scatter_gather": true, "enabled_deprecated_commands": ["zrevrangebyscore" ] }';
zrevrank¶
ZREVRANK key member [WITHSCORE]
Возвращает позиции элемента (member) в сортированном множестве,
хранящемся по указанному ключу key, с сортировкой по убыванию оценки.
Отсчёт начинается с 0.
Дополнительный параметр WITHSCORE добавляет в
вывод команды сами оценки.
Для вывода позиций элементов по возрастанию оценки (включая в вывод сами оценки) используйте ZRANK.
zscan¶
ZSCAN key cursor [MATCH pattern] [COUNT count]
См. SCAN
zscore¶
ZSCORE key member
Возвращает оценку элемента member в сортированном множестве, хранящемся
по ключу key.
zunion¶
ZUNION numkeys key [key ...] [WEIGHTS weight [weight ...]]
[AGGREGATE <SUM | MIN | MAX>] [WITHSCORES]
Работает аналогично ZUNIONSTORE, но вместо записи результирующего сортированного множества выводит его клиенту.
zunionstore¶
ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight
[weight ...]] [AGGREGATE <SUM | MIN | MAX>]
Объединяет элементы двух или более сортированных множеств, хранящихся по
указанным ключам (key) в новое сортированное множество и записывает его в
destination. Объединение происходит на основе оценок элементов,
которые встречаются в исходных множествах. Перед списком ключей необходимо
указать их количество (numkeys). Команда выводит количество элементов
в результирующем множестве.
Дополнительный параметр WEIGHTS позволяет указать "вес" для каждого
исходного множества. Это число будет использовано как мультипликатор для
оценок в множестве.
Дополнительный параметр AGGREGATE позволяет указать способ объединения.
По умолчанию, это суммирование (SUM), однако можно указать запись
минимальной (MIN) или максимальной (MAX) оценки элемента из всех
исходных множеств, где он встречается.
Примеры:
127.0.0.1:7379> ZADD zset1 1 "one"
(integer) 1
127.0.0.1:7379> ZADD zset1 2 "two"
(integer) 1
127.0.0.1:7379> ZADD zset2 2 "two"
(integer) 1
127.0.0.1:7379> ZADD zset2 3 "three"
(integer) 1
127.0.0.1:7379> ZUNIONSTORE zsetout11 2 zset1 zset2 WEIGHTS 1 1
(integer) 3
127.0.0.1:7379> ZUNIONSTORE zsetout23 2 zset1 zset2 WEIGHTS 2 3
(integer) 3
127.0.0.1:7379> ZUNIONSTORE zsetout34 2 zset1 zset2 WEIGHTS 2 3 AGGREGATE MIN
(integer) 3
127.0.0.1:7379> ZRANGE zsetout11 0 1000 WITHSCORES
1) "one"
2) "1"
3) "three"
4) "3"
5) "two"
6) "4"
127.0.0.1:7379> ZRANGE zsetout23 0 1000 WITHSCORES
1) "one"
2) "2"
3) "three"
4) "9"
5) "two"
6) "10"
127.0.0.1:7379> ZRANGE zsetout34 0 1000 WITHSCORES
1) "one"
2) "2"
3) "two"
4) "4"
5) "three"
6) "9"
Команды для списков¶
blmove¶
BLMOVE source destination <LEFT | RIGHT> <LEFT | RIGHT> timeout
Работает аналогично LMPOP, но с использованием блокировки.
Если исходный список (source) пуст, то команда будет ждать наполнения
списка в течение указанного в timeout времени (в секундах), и в случае
неудачи вернёт ошибку. Если таймаут установить в 0, то блокировка
будет бесконечной.
blmpop¶
BLMPOP timeout numkeys key [key ...] <LEFT | RIGHT> [COUNT count]
Работает аналогично LMOVE, но с использованием блокировки.
Если все указанные списки ключей пусты, то команда будет ждать
наполнения любого из них в течение указанного в timeout времени (в
секундах), и в случае неудачи вернёт ошибку. Если таймаут установить в
0, то блокировка будет бесконечной.
blpop¶
BLPOP key [key ...] timeout
Работает аналогично LPOP, но с использованием блокировки.
Если указанный список пуст, то команда будет ждать его наполнения
в течение указанного в timeout времени (в секундах), и в случае
неудачи вернёт ошибку. Если таймаут установить в 0, то блокировка
будет бесконечной.
brpoplpush¶
BRPOPLPUSH source destination timeout
Работает аналогично RPOPLPUSH, но с использованием блокировки. При использовании внутри блока MULTI или EXEC данная команда ведёт себя полностью идентично RPOPLPUSH.
Примечание
Данная команда отнесена в Redis в разряд устаревших и по умолчанию отключена в Radix. Для включения используйте следующий SQL-запрос:
ALTER PLUGIN radix 1.1.1 SET radix.redis_compatibility = '{ "enforce_one_slot_transactions": true, "push_result_includes_popped_items": true, "include_radix_section_in_info_by_default": true, "disable_scatter_gather": true, "enabled_deprecated_commands": ["brpoplpush" ] }';
brpop¶
BRPOP key [key ...] timeout
Работает аналогично RPOP, но с использованием блокировки. Поведение механизма блокировки аналогично таковому для BLPOP.
lindex¶
LINDEX key index
Возвращает элемент с указанным индексом (index) из списка, хранящегося
по указанному ключу key. Индекс 0 означает первый элемент списка,
-1 — последний и т.д.
Примеры:
127.0.0.1:7379> LPUSH mylist "World"
(integer) 1
127.0.0.1:7379> LPUSH mylist "Hello"
(integer) 2
127.0.0.1:7379> LINDEX mylist 0
"Hello"
127.0.0.1:7379> LINDEX mylist -1
"World"
127.0.0.1:7379> LINDEX mylist 3
(nil)
127.0.0.1:7379>
linsert¶
LINSERT key <BEFORE | AFTER> pivot element
Вставляет в список, хранящийся по ключу key, элемент (element) до
(BEFORE) или после (AFTER) указанного другого элемента (pivot).
Если указан несуществующий ключ, то команда ничего не сделает. Если по
указанному ключу нет списка, то команда вернёт ошибку.
Примеры:
127.0.0.1:7379> RPUSH mylist "Hello"
(integer) 1
127.0.0.1:7379> RPUSH mylist "World"
(integer) 2
127.0.0.1:7379> LINSERT mylist BEFORE "World" "There"
(integer) 3
127.0.0.1:7379> LRANGE mylist 0 -1
1) "Hello"
2) "There"
3) "World"
127.0.0.1:7379>
llen¶
LLEN key
Возвращает длину (количество элементов) списка, хранящегося по ключу
key. Если указан несуществующий ключ, то команда вернёт 0. Если по
указанному ключу нет списка, то команда вернёт ошибку.
Примеры:
127.0.0.1:7379> LPUSH mylist "World"
(integer) 1
127.0.0.1:7379> LPUSH mylist "Hello"
(integer) 2
127.0.0.1:7379> LLEN mylist
(integer) 2
lmove¶
LMOVE source destination <LEFT | RIGHT> <LEFT | RIGHT>
Перемещает первый/последний элемент первого списка (source) в
начало/конец второго списка (destination).
Примеры:
127.0.0.1:7379> RPUSH mylist "one"
(integer) 1
127.0.0.1:7379> RPUSH mylist "two"
(integer) 2
127.0.0.1:7379> RPUSH mylist "three"
(integer) 3
127.0.0.1:7379> LMOVE mylist myotherlist RIGHT LEFT
"three"
127.0.0.1:7379> LMOVE mylist myotherlist LEFT RIGHT
"one"
127.0.0.1:7379> LRANGE mylist 0 -1
1) "two"
127.0.0.1:7379> LRANGE myotherlist 0 -1
1) "three"
2) "one"
127.0.0.1:7379>
lmpop¶
LMPOP numkeys key [key ...] <LEFT | RIGHT> [COUNT count]
Извлекает (и удаляет) один или несколько (count) элементов в начале
(LEFT) или в конце (RIGHT) из первого непустого
списка ключей (key) в перечне списков ключей.
Примеры:
127.0.0.1:7379> LMPOP 2 non1 non2 LEFT COUNT 10
(nil)
127.0.0.1:7379> LPUSH mylist "one" "two" "three" "four" "five"
(integer) 5
127.0.0.1:7379> LMPOP 1 mylist LEFT
1) "mylist"
2) 1) "five"
127.0.0.1:7379> LRANGE mylist 0 -1
1) "four"
2) "three"
3) "two"
4) "one"
127.0.0.1:7379> LMPOP 1 mylist RIGHT COUNT 10
1) "mylist"
2) 1) "one"
2) "two"
3) "three"
4) "four"
127.0.0.1:7379> LPUSH mylist "one" "two" "three" "four" "five"
(integer) 5
127.0.0.1:7379> LPUSH mylist2 "a" "b" "c" "d" "e"
(integer) 5
127.0.0.1:7379> LMPOP 2 mylist mylist2 right count 3
1) "mylist"
2) 1) "one"
2) "two"
3) "three"
127.0.0.1:7379> LRANGE mylist 0 -1
1) "five"
2) "four"
127.0.0.1:7379> LMPOP 2 mylist mylist2 right count 5
1) "mylist"
2) 1) "four"
2) "five"
127.0.0.1:7379> LMPOP 2 mylist mylist2 right count 10
1) "mylist2"
2) 1) "a"
2) "b"
3) "c"
4) "d"
5) "e"
127.0.0.1:7379> EXISTS mylist mylist2
(integer) 0
127.0.0.1:7379>
lpop¶
LPOP key [count]
Извлекает (и удаляет) указанное число (count) первых элементов,
хранящихся в списке по адресу ключа key. Без аргумента count команда
извлекает один первый элемент в начале списка.
Примеры:
127.0.0.1:7379> RPUSH mylist "one" "two" "three" "four" "five"
(integer) 5
127.0.0.1:7379> LPOP mylist
"one"
127.0.0.1:7379> LPOP mylist 2
1) "two"
2) "three"
127.0.0.1:7379> LRANGE mylist 0 -1
1) "four"
2) "five"
lpos¶
LPOS key element [RANK rank] [COUNT num-matches] [MAXLEN len]
Возвращает индекс найденного в списке, хранящегося по ключу key,
элемента (element). Без дополнительных аргументов эта команда
просканирует список слева направо и вернёт индекс первого найденного
элемента. Нумерация элементов начинается с 0.
Пример:
> RPUSH mylist a b c 1 2 3 c c
> LPOS mylist c
2
Параметр RANK позволяет вывести другой (по счёту rank) найденный
элемент в случае, если их несколько. Отрицательное значение rank
означает, что нумерация результата будет вестись справа налево.
Примеры:
> LPOS mylist c RANK 2
6
> LPOS mylist c RANK -1
7
Параметр COUNT позволяет вывести позиции всех (по счёту num-matches)
найденных элементов.
Пример:
> LPOS mylist c COUNT 2
[2,6]
При совместном использовании COUNT и RANK можно изменить точку
отсчёта, с которой будет производиться поиск совпадений.
Пример:
> LPOS mylist c RANK -1 COUNT 2
[7,6]
lpush¶
LPUSH key element [element ...]
Вставляет указанные элементы в начало списка, хранящегося по ключу
key.
Примеры:
127.0.0.1:7379> LPUSH mylist "world"
(integer) 1
127.0.0.1:7379> LPUSH mylist "hello"
(integer) 2
127.0.0.1:7379> LRANGE mylist 0 -1
1) "hello"
2) "world"
lpushx¶
LPUSHX key element [element ...]
Работает аналогично LPUSH, но проверяет, что указанный ключ
key существует. В противном случае команда ничего не делает (в отличие
от LPUSH).
lrange¶
LRANGE key start stop
Возвращает диапазон элементов списка, хранящегося по ключу key.
Позиция start обозначает начало диапазона, stop — его конец. При
указании отрицательных значений можно использовать диапазон, отсчитанный
справа налево. Нумерация элементов списка начинается с нуля.
Некорректный диапазон будет воспринят либо как пустой список (если
start превышает максимальный номер элемента), либо как корректный с
отсечением пустой части (если stop превышает максимальный номер
элемента). Следует учитывать, что при прямом отсчёте элементов слева
направо значение stop будет включено в состав элементов. То есть,
диапазон LRANGE list 0 10 будет содержать 11 элементов.
Примеры:
127.0.0.1:7379> RPUSH mylist "one"
(integer) 1
127.0.0.1:7379> RPUSH mylist "two"
(integer) 2
127.0.0.1:7379> RPUSH mylist "three"
(integer) 3
127.0.0.1:7379> LRANGE mylist 0 0
1) "one"
127.0.0.1:7379> LRANGE mylist -3 2
1) "one"
2) "two"
3) "three"
127.0.0.1:7379> LRANGE mylist -100 100
1) "one"
2) "two"
3) "three"
127.0.0.1:7379> LRANGE mylist 5 10
(empty array)
lrem¶
LREM key count element
Удаляет из списка, хранящегося по ключу key, указанное количество
(count) найденных элементов (element). Положительное значение count
означает поиск слева направо, отрицательное — справа налево. При
значении 0 будут удалены все найденные элементы.
Примеры:
127.0.0.1:7379> RPUSH mylist "hello"
(integer) 1
127.0.0.1:7379> RPUSH mylist "hello"
(integer) 2
127.0.0.1:7379> RPUSH mylist "foo"
(integer) 3
127.0.0.1:7379> RPUSH mylist "hello"
(integer) 4
127.0.0.1:7379> LREM mylist -2 "hello"
(integer) 2
127.0.0.1:7379> LRANGE mylist 0 -1
1) "hello"
2) "foo"
127.0.0.1:7379>
lset¶
LSET key index element
Устанавливает индекс (index) для добавляемого элемента (element).
Таким образом можно затереть один элемент списка и заменить его новым
значением.
Примеры:
127.0.0.1:7379> RPUSH mylist "one"
(integer) 1
127.0.0.1:7379> RPUSH mylist "two"
(integer) 2
127.0.0.1:7379> RPUSH mylist "three"
(integer) 3
127.0.0.1:7379> LSET mylist 0 "four"
"OK"
127.0.0.1:7379> LSET mylist -2 "five"
"OK"
127.0.0.1:7379> LRANGE mylist 0 -1
1) "four"
2) "five"
3) "three"
127.0.0.1:7379>
ltrim¶
LTRIM key start stop
Обрезает список, хранящийся по ключу key, задавая его размер с помощью
диапазона. При указании отрицательных значений можно использовать
диапазон, отсчитанный справа налево. Нумерация элементов списка
начинается с нуля. Некорректный диапазон будет воспринят либо как пустой
список (если start превышает максимальный номер элемента) c удалением
ключей, либо как корректный с увеличением границ списка (если stop
превышает максимальный номер элемента).
Типичное применение LTRIM:
LPUSH mylist someelement
LTRIM mylist 0 99
Эти команды добавят в список значение someelement и при этом установят
емкость списка равной 100 элементам.
Дополнительные примеры:
127.0.0.1:7379> RPUSH mylist "one"
(integer) 1
127.0.0.1:7379> RPUSH mylist "two"
(integer) 2
127.0.0.1:7379> RPUSH mylist "three"
(integer) 3
127.0.0.1:7379> LTRIM mylist 1 -1
"OK"
127.0.0.1:7379> LRANGE mylist 0 -1
1) "two"
2) "three"
127.0.0.1:7379>
rpop¶
RPOP key [count]
Извлекает (и удаляет) указанное число (count) последних элементов,
хранящихся в списке по адресу ключа key. Без аргумента count команда
извлекает один первый элемент в начале списка.
Примеры:
127.0.0.1:7379> RPUSH mylist "one" "two" "three" "four" "five"
(integer) 5
127.0.0.1:7379> RPOP mylist
"five"
127.0.0.1:7379> RPOP mylist 2
1) "four"
2) "three"
127.0.0.1:7379> LRANGE mylist 0 -1
1) "one"
2) "two"
rpoplpush¶
RPOPLPUSH source destination
Извлекает один последний элемент из множества, хранящегося в source и
добавляет его в начало множества, хранящегося в destination. Если
source не существует, команда вернёт nil и ничего не переместит.
Если в качестве source и destination указать одно и то же множество,
то команда переместит элемент из его конца в его начало.
Примечание
Данная команда отнесена в Redis в разряд устаревших и по умолчанию отключена в Radix. Для включения используйте следующий SQL-запрос:
ALTER PLUGIN radix 1.1.1 SET radix.redis_compatibility = '{ "enforce_one_slot_transactions": true, "push_result_includes_popped_items": true, "include_radix_section_in_info_by_default": true, "disable_scatter_gather": true, "enabled_deprecated_commands": ["rpoplpush" ] }';
rpush¶
RPUSH key element [element ...]
Работает аналогично LPUSH, но добавляет элементы в конец списка.
rpushx¶
RPUSHX key element [element ...]
Работает аналогично RPUSH, но проверяет существование ключа
key и то, что этот ключ содержит список. В противном случае команда
ничего не делает.
Команды управления подпиской (Pub/Sub)¶
Pub/Sub — механизм для отправки сообщений между клиентами через каналы.
psubscribe¶
PSUBSCRIBE pattern [pattern ...]
Подписывает клиента на получение данных согласно указанному шаблону (pattern). Примеры шаблонов:
h?lloподписывает на hello, hallo и hxlloh*lloподписывает на hllo и heeeelloh[ae]lloподписывает на hello и hallo, но не hillo
publish¶
PUBLISH channel message
Размещает сообщение (message) в указанном канале (channel).
Сообщение будет доступно клиентам вне зависимости от того, к какому узлу
кластера они подключены.
pubsub channels¶
PUBSUB CHANNELS [pattern]
Выводит список активных каналов. Канал считается активным, если на него
есть хотя бы один подписчик (подписка на шаблоны (pattern) не
считается). Если в команде не указан шаблон (pattern), то будут
выведены все активные каналы. В противном случае будут выведены только
те активные каналы, которые соответствуют шаблону.
pubsub numpat¶
PUBSUB NUMPAT
Выводит список уникальных шаблонов, на которые были произведены подписки со стороны клиентов (с помощью команды PSUBSCRIBE). Не следует путать вывод этой команды с общим числом клиентов.
pubsub numsub¶
PUBSUB NUMSUB [channel [channel ...]]
Выводит список всех подписчиков указанных каналов. Подписчики на шаблоны
(pattern) не считаются.
pubsub shardchannels¶
PUBSUB SHARDCHANNELS [pattern]
Выводит список активных шард-каналов (каналов Redis, работающих в рамках
отдельных репликасетов). Параметр pattern позволяет отфильтровать
список, указав необходимый шаблон.
pubsub shardnumsub¶
PUBSUB SHARDNUMSUB [shardchannel [shardchannel ...]]
Выводит количество подписчиков для указанных шард-каналов (каналов Redis, работающих в рамках отдельных репликасетов).
punsubscribe¶
PUNSUBSCRIBE [pattern [pattern ...]]
Отписывает клиента от указанных шаблонов. Если ни один канал (pattern)
не указан, то клиент будет отписан от всех шаблонов.
spublish¶
SPUBLISH shardchannel message
Размещает сообщение (message) в указанном шард-канале
(shardchannel). Сообщение будет доступно клиентам на всех репликах,
входящих в состав репликасета, на котором создан шард-канал.
ssubscribe¶
SSUBSCRIBE shardchannel [shardchannel ...]
Подписывает клиента на получение данных из указанных шард-каналов
(shardchannel). Все шард-каналы, указанные в команде, должны
относиться к одному репликасету. См. также PSUBSCRIBE.
subscribe¶
SUBSCRIBE channel [channel ...]
Подписывает клиента на получение данных из указанных каналов
(channel). См. также PSUBSCRIBE.
sunsubscribe¶
SUNSUBSCRIBE [shardchannel [shardchannel ...]]
Отписывает клиента от указанных шард-каналов. Если ни один шард-канал
(shardchannel) не указан, то клиент будет отписан от всех
шард-каналов.
unsubscribe¶
UNSUBSCRIBE [channel [channel ...]]
Отписывает клиента от указанных каналов. Если ни один канал (channel)
не указан, то клиент будет отписан от всех каналов.
Команды для строк¶
append¶
APPEND key value
Добавляет значение value к строке, хранящейся по ключу key. Если
указанный ключ не существует, то он будет создан, и тогда данная команда
сработает аналогично SET.
Пример:
> APPEND mykey "Hello"
(integer) 5
> APPEND mykey " World"
(integer) 11
> GET mykey
"Hello World"
get¶
GET key
Получает значение ключа key. Если ключ не существует, возвращается
специальное значение nil. Если значение, хранящееся в ключе, не
является строкой, возвращается ошибка, поскольку GET работает только
со строковыми значениями.
getdel¶
GETDEL key
Получает значение ключа key и удаляет его. Команда действует подобно
GET, но удаляет ключ только в том случае, если в нём
действительно хранятся строковые значения.
getrange¶
GETRANGE key start end
Возвращает подстроку из значения, хранящегося по указанному ключу.
Границы подстроки определяют аргументами start и end.
incr¶
INCR key
Увеличивает значение, хранящееся по указанному ключу, на 1. Если
указанный ключ не существует, то его значение
принимается за 0.
incrby¶
INCRBY key increment
Увеличивает значение, хранящееся по указанному ключу, на величину
increment. Если указанный ключ не существует, то его значение
принимается за 0.
incrbyfloat¶
INCRBYFLOAT key increment
Увеличивает значение, хранящееся по указанному ключу, на величину
increment, но при этом поддерживает дробные и отрицательные значения.
Если указанный ключ не существует, то его значение принимается за 0.
mget¶
MGET key [key ...]
Возвращает значения всех указанных ключей. Если ключ не существует, или
не содержит значения, то для него команда вернёт nil. Благодаря этому,
команда никогда не возвращает ошибку.
mset¶
MSET key value [key value ...]
Сохраняет строковые значения в ключах в соответствующих парах. Существующие значения при этом перезаписываются (аналогично SET). Команда работает атомарно, устанавливая все значения за один проход, без возможности отследить, какие ключи были изменены, а какие нет.
psetex¶
PSETEX key milliseconds value
Устанавливает значение и срок жизни (таймаут) для ключа key подобно
SETEX, но в миллисекундах.
Примечание
Данная команда отнесена в Redis в разряд устаревших и по умолчанию отключена в Radix. Для включения используйте следующий SQL-запрос:
ALTER PLUGIN radix 1.1.1 SET radix.redis_compatibility = '{ "enforce_one_slot_transactions": true, "push_result_includes_popped_items": true, "include_radix_section_in_info_by_default": true, "disable_scatter_gather": true, "enabled_deprecated_commands": ["psetex" ] }';
set¶
SET key value [NX | XX] [GET] [EX seconds | PX milliseconds |
EXAT unix-time-seconds | PXAT unix-time-milliseconds | KEEPTTL]
Сохраняет строковое значение в ключе. Если ключ уже содержит значение,
оно будет перезаписано, независимо от его типа. Любое предыдущее
ограничение таймаута, связанное с ключом, отменяется при успешном
выполнении операции SET.
Параметры:
EX— установка указанного времени истечения срока действия в секундах (целое положительное число)PX— установка указанного времени истечения в миллисекундах (целое положительное число)EXAT— установка указанного времени Unix, в которое истекает срок действия ключа, в секундах (целое положительное число)PXAT— установка указанного времени Unix, по истечении которого срок действия ключа истечёт, в миллисекундах (целое положительное число)NX— установка значения ключа только в том случае, если он ещё не существуетXX— установка значения ключа только в том случае, если он уже существуетKEEPTTL— сохранить время жизни, связанное с ключомGET— возвращает старую строку, хранящуюся по адресу ключа, илиnil, если ключ не существовал. Возвращается ошибка иSETпрерывается, если значение, хранящееся по адресу ключаkey, не является строкой.
setex¶
SETEX key seconds value
Устанавливает для ключа key значение value и срок жизни (таймаут) в секундах.
Аналогичный результат достигается так:
SET key value EX seconds
Примечание
Данная команда отнесена в Redis в разряд устаревших и по умолчанию отключена в Radix. Для включения используйте следующий SQL-запрос:
ALTER PLUGIN radix 1.1.1 SET radix.redis_compatibility = '{ "enforce_one_slot_transactions": true, "push_result_includes_popped_items": true, "include_radix_section_in_info_by_default": true, "disable_scatter_gather": true, "enabled_deprecated_commands": ["setex" ] }';
Установка некорректного значения вернёт ошибку.
setnx¶
SETNX key value
Устанавливает для ключа key значение value только если такого ключа
ранее не было.
Примечание
Данная команда отнесена в Redis в разряд устаревших и по умолчанию отключена в Radix. Для включения используйте следующий SQL-запрос:
ALTER PLUGIN radix 1.1.1 SET radix.redis_compatibility = '{ "enforce_one_slot_transactions": true, "push_result_includes_popped_items": true, "include_radix_section_in_info_by_default": true, "disable_scatter_gather": true, "enabled_deprecated_commands": ["setnx" ] }';
strlen¶
STRLEN key
Возвращает длину текстового значения, хранящегося по указанному ключу.
Команды для получения информации о Sentinel¶
Radix поддерживает необходимый минимум команд для того, чтобы приложения могли получать адреса серверов Picodata, если эти приложения написаны с поддержкой Sentinel.
По умолчанию перечисленные ниже команды отключены. Для того, чтобы их включить, используйте запрос:
ALTER PLUGIN radix 1.1.1 SET radix.sentinel_enabled = 'true';
sentinel get-master-addr-by-name¶
SENTINEL GET-MASTER-ADDR-BY-NAME <replicaset name>
Возвращает адрес Radix для заданного репликасета.
sentinel master¶
SENTINEL MASTER <replicaset name>
Выводит мастера для заданного репликасета. Radix возвращает мастера репликасета с соответствующим именем.
sentinel masters¶
SENTINEL MASTERS
Возвращает список репликасетов, которые есть в системе.
sentinel myid¶
SENTINEL MYID
Возвращает id текущего инстанса
sentinel replicas¶
SENTINEL REPLICAS <replicaset name>
Показывает список реплик для заданного репликасета.
sentinel sentinels¶
SENTINEL SENTINELS <replicaset name>
Показывает список сентинелей для заданного репликасета. Radix возвращает мастера репликасета с соответствующим именем.
Команды для скриптов¶
Radix поддерживает следующие команды для работы с Lua-скриптами:
eval¶
EVAL script numkeys [key [key ...]] [arg [arg ...]]
Вызывает Lua-скрипт. Первый аргумент — исходный код Lua-скрипта
(script). Следующий за ним аргумент — количество передаваемых ключей
(numkeys) и далее сами ключи и их аргументы.
Пример:
> EVAL "return ARGV[1]" 0 hello
"hello"
Поддерживаемые скриптовые функции для EVAL:
redis.call(command)— вызов команды Redis и вывод её результата (при его наличии)redis.pcall(command)— аналогredis.call(), но с гарантированным возвратом ответа, что удобно для анализа ошибок командredis.log(level, message)— запись в журнал инстанса сообщения с указанием уровня важности. Например,redis.log(redis.LOG_WARNING, 'Something is terribly wrong')redis.sha1hex(x)— возврат шестнадцатеричного SHA1-хэша для указанного числа xredis.status_reply(x)— возврат статуса состояния x в виде строкиredis.error_reply— возврат состояния x в виде строкиredis.REDIS_VERSION— возврат текущей версии Redis в виде строки в формате Luaredis.REDIS_VERSION_NUM— возврат текущей версии Redis в виде номера
evalro¶
EVAL_RO script numkeys [key [key ...]] [arg [arg ...]]
Вызывает Lua-скрипт аналогично eval, но в режиме "только чтение", т.е. без модификации данных БД.
evalsha¶
EVALSHA sha1 numkeys [key [key ...]] [arg [arg ...]]
Вызывает Lua-скрипт аналогично eval, но в качестве аргумента принимает не сам скрипт, а его SHA1-хэш из кэша скриптов.
evalsharo¶
EVALSHA_RO sha1 numkeys [key [key ...]] [arg [arg ...]]
Вызывает Lua-скрипт аналогично evalsha, но в режиме "только чтение", т.е. без модификации данных БД.
script exists¶
SCRIPT EXISTS sha1 [sha1 ...]
Возвращает информацию о существовании скрипта с указанным хэшем SHA1 в кэше скриптов.
script flush¶
SCRIPT FLUSH [ASYNC | SYNC]
Очищает кэш Lua-скриптов. По умолчанию, операция производится в синхронном режиме. Пользователь может указать режим явно:
ASYNC— очистить кэш асинхронноSYNC— очистить кэш синхронно
script load¶
SCRIPT LOAD script
Загружает скрипт в кэш скриптов. Работает идемпотентно (т.е. подразумевая, что такой скрипт уже есть в хранилище).
Команды для транзакций¶
discard¶
DISCARD
Удаляет все команды из очереди исполнения
exec¶
EXEC
Исполняет все команды в очереди в рамках единой транзакции.
multi¶
MULTI
Обозначает момент блокировки транзакции. Последующие команды будут исполняться одна за другой при помощи exec.
unwatch¶
UNWATCH key [key ...]
Удаляет все ключи из списка наблюдения watch.
watch¶
WATCH key [key ...]
Включает проверку значений указанных ключей для последующих транзакций.
Команды управления и диагностики¶
flushall¶
FLUSHALL [ASYNC | SYNC]
Очищает все базы данных.
SYNC: синхронно, т.е. команда вернёт управление только после полной очистки БД.ASYNC: асинхронно, команда вернёт управление быстрее, данные очистятся в фоне.
Если ни одна из опций не указана, используется режим SYNC
flushdb¶
FLUSHDB [ASYNC | SYNC]
Очищает текущую базу данных.
SYNC: синхронно — команда вернёт управление только после полной очистки БДASYNC: асинхронно — команда вернёт управление быстрее, данные очистятся в фоне
Если ни одна из опций не указана, используется режим SYNC
info¶
INFO [section [section ...]]
Возвращает информацию о сервере, подключенных клиентах, нагрузке на
текущий узел и прочую статистику. Параметр section позволяет уточнить
запрос, ограничив его нужной секцией. Доступные секции:
serverclientsmemorypersistencestatsreplicationcpumoduleserrorstatsclusterkeyspacecommandstatslatencystatssentinelradix
Примечание
Секция radix отображается в выводе команды info только
при включённом параметре include_radix_section_in_info_by_default = true, либо
при явном вызове типа INFO radix clients.
Образец вывода полного набора сведений
127.0.0.1:6379> info
# Server
redis_version:8.0.0
redis_git_sha1:aa3d2882602f094b1941e32c297a5260880ba985
redis_git_dirty:1
redis_build_id:
redis_mode:standalone
os:AlmaLinux 7.2.4-200.fc44.x86_64 x86_64
arch_bits:64
monotonic_clock:POSIX clock_gettime with CLOCK_MONOTONIC
multiplexing_api:epoll
atomicvar_api:c11-builtin
gcc_version:rustc 1.98.1 (48a229cea 2026-09-01)
process_id:1
process_supervised:no
run_id:8642b760e02946f9b2cf5df9caedc627
tcp_port:6379
server_time_usec:1789051928765325000
uptime_in_seconds:22
uptime_in_days:0
hz:3200
configured_hz:0
lru_clock:0
executable:/usr/bin/picodata
config_file:
io_threads_active:1
# Clients
connected_clients:1
cluster_connections:0
maxclients:10000
client_recent_max_input_buffer:8192
client_recent_max_output_buffer:8192
blocked_clients:0
tracking_clients:0
pubsub_clients:0
watching_clients:0
clients_in_timeout_table:0
total_watched_keys:0
total_blocking_keys:0
total_blocking_keys_on_nokey:0
# Memory
used_memory:130023424
used_memory_human:124.00M
used_memory_rss:65708032
used_memory_rss_human:62.66M
used_memory_peak:130023424
used_memory_peak_human:124.00M
used_memory_peak_perc:100.00
used_memory_overhead:96468992
used_memory_startup:130023424
used_memory_dataset:33554432
used_memory_dataset_perc:25.81
allocator_allocated:130023424
allocator_active:130023424
allocator_resident:65708032
total_system_memory:33281540096
total_system_memory_human:31.00G
used_memory_lua:7453438
used_memory_vm_eval:7453438
used_memory_lua_human:7.11M
used_memory_scripts_eval:0
number_of_cached_scripts:0
number_of_functions:0
number_of_libraries:0
used_memory_vm_functions:0
used_memory_vm_total:7453438
used_memory_vm_total_human:7.11M
used_memory_functions:0
used_memory_scripts:0
used_memory_scripts_human:0B
maxmemory:268435456
maxmemory_human:256.00M
maxmemory_policy:noeviction
allocator_frag_ratio:12.50
allocator_frag_bytes:33554432
allocator_muzzy:0
allocator_rss_ratio:NaN
allocator_rss_bytes:0
mem_not_counted_for_evict:0
mem_replication_backlog:0
mem_total_replication_buffers:0
mem_fragmentation_ratio:NaN
mem_fragmentation_bytes:0
mem_clients_normal:24576
mem_allocator:slab
active_defrag_running:0
lazyfree_pending_objects:0
lazyfreed_objects:0
# Persistence
loading:0
async_loading:0
# Stats
total_connections_received:2
total_commands_processed:4
instantaneous_ops_per_sec:0
total_net_input_bytes:98
total_net_output_bytes:718
total_net_repl_input_bytes:0
total_net_repl_output_bytes:0
instantaneous_input_kbps:0.00
instantaneous_output_kbps:0.00
instantaneous_input_repl_kbps:0.00
instantaneous_output_repl_kbps:0.00
rejected_connections:0
sync_full:0
sync_partial_ok:0
sync_partial_err:0
expired_keys:0
evicted_keys:0
total_eviction_exceeded_time:0
current_eviction_exceeded_time:0
keyspace_hits:0
keyspace_misses:0
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:0
migrate_cached_sockets:0
unexpected_error_replies:0
total_error_replies:2
total_reads_processed:6
total_writes_processed:4
client_query_buffer_limit_disconnections:0
client_output_buffer_limit_disconnections:0
reply_buffer_expands:0
reply_buffer_shrinks:0
request_buffer_expands:0
request_buffer_shrinks:0
acl_access_denied_auth:0
acl_access_denied_cmd:0
acl_access_denied_key:0
acl_access_denied_channel:0
watching_clients:0
clients_in_timeout_table:0
total_watched_keys:0
# Replication
role:master
connected_slaves:0
master_failover_state:no-failover
master_replid:153a0c8e-5a07-4792-8995-a8a3e5f1c3be
master_replid2:153a0c8e-5a07-4792-8995-a8a3e5f1c3be
master_repl_offset:34845
second_repl_offset:34845
repl_backlog_active:0
repl_backlog_size:0
repl_backlog_first_byte_offset: 0
repl_backlog_histlen:0
# CPU
used_cpu_sys:0.010062
used_cpu_user:0.029083
used_cpu_sys_children:0.000000
used_cpu_user_children:0.000000
used_cpu_sys_main_thread:0.009573
used_cpu_user_main_thread:0.028856
# Modules
# Errorstats
errorstat_UNKNOWN_COMMAND:count=2
# Cluster
cluster_enabled:1
# Keyspace
# Commandstats
cmdstat_info:calls=1,usec=59,usec_per_call=59,rejected_calls=0,failed_calls=0
cmdstat_ping:calls=1,usec=198,usec_per_call=198,rejected_calls=0,failed_calls=0
# Latencystats
latency_percentiles_usec_info:p50.0=59,p99.0=59,p99.9=59
latency_percentiles_usec_ping:p50.0=198,p99.0=198,p99.9=198
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_tilt_since_seconds:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
# Radix
radix_version:1.1.1
picodata_version:26.1.6
picodata_cluster_name:radix-docker-standalone
picodata_cluster_uuid:9f0005c4-b3f1-42b4-abf0-772299e563be
picodata_instance_name:default_1_1
picodata_instance_uuid:153a0c8e-5a07-4792-8995-a8a3e5f1c3be
slab_info_items_size:16272
slab_info_items_used:160
slab_info_items_used_ratio:0.98
slab_info_quota_size:268435456
slab_info_quota_used:33554432
slab_info_quota_used_ratio:12.5
slab_info_arena_size:33554432
slab_info_arena_used:49312
slab_info_arena_used_ratio:0.1
latency graph¶
LATENCY GRAPH event
Строит ASCII-график для указанного события задержки. График помогает быстро оценить тренд задержек без разбора сырых данных из LATENCY HISTORY или внешних инструментов.
Пример:
127.0.0.1:6379> latency reset command
(integer) 0
127.0.0.1:6379> latency graph command
command - high 500 ms, low 101 ms (all time high 500 ms)
--------------------------------------------------------------------------------
#_
_||
_|||
_||||
11186
542ss
sss
Подробности:
- Вертикальные подписи под столбцами графика показывают, сколько секунд, минут, часов или дней назад произошло событие. Например,
15sозначает, что первое показанное событие произошло 15 секунд назад. - График нормализуется по шкале min-max: символ
_в нижней строке соответствует минимальному значению, а символ#в верхней строке — максимальному.
latency help¶
LATENCY HELP
Возвращает справку с описанием подкоманд LATENCY.
latency histogram¶
LATENCY HISTOGRAM [command [command ...]]
Возвращает кумулятивное распределение задержек команд в формате гистограммы.
Параметры и варианты использования:
command [command ...]— одна или несколько команд, для которых нужно вернуть гистограммы задержек. Если аргумент не указан, возвращаются гистограммы для всех доступных команд.
Подробности:
- Каждая гистограмма содержит имя команды, общее количество вызовов этой команды и карту временных корзин.
- Каждая корзина представляет диапазон задержек и покрывает в два раза больший диапазон, чем предыдущая.
- Пустые корзины не включаются в ответ.
- Отслеживаются задержки от 1 наносекунды примерно до 1 секунды. Все, что выше 1 секунды, считается
+Inf. - Максимальное количество корзин —
log2(1,000,000,000) = 30. - Для работы команды должна быть включена расширенная статистика задержек. По умолчанию она включена. Чтобы включить ее явно, используйте
CONFIG SET latency-tracking yes. - Чтобы удалить данные гистограмм задержек, используйте команду
CONFIG RESETSTAT.
Пример:
127.0.0.1:6379> LATENCY HISTOGRAM set
1# "set" =>
1# "calls" => (integer) 100000
2# "histogram_usec" =>
1# (integer) 1 => (integer) 99583
2# (integer) 2 => (integer) 99852
3# (integer) 4 => (integer) 99914
4# (integer) 8 => (integer) 99940
5# (integer) 16 => (integer) 99968
6# (integer) 33 => (integer) 100000
latency history¶
LATENCY HISTORY event
Возвращает сырые данные временного ряда всплесков задержки для события
event. Команда возвращает до 160 пар «метка времени — задержка» для
указанного события.
Пример:
127.0.0.1:6379> latency history command
1) 1) (integer) 1405067822
2) (integer) 251
2) 1) (integer) 1405067941
2) (integer) 1001
latency latest¶
LATENCY LATEST
Возвращает последние зарегистрированные события задержки.
Подробности:
Каждое событие в ответе содержит следующие поля:
- имя события;
- Unix-метка времени последнего всплеска задержки для события;
- задержка последнего события в миллисекундах;
- максимальная задержка этого события за все время.
Значение «за все время» означает максимальную задержку с момента запуска экземпляра или с момента сброса событий командой LATENCY RESET.
Пример:
127.0.0.1:6379> latency latest
1) 1) "command"
2) (integer) 1405067976
3) (integer) 251
4) (integer) 1001
latency reset¶
LATENCY RESET [event [event ...]]
Сбрасывает временные ряды всплесков задержки для всех событий или только для указанных событий.
Параметры и варианты использования:
event [event ...]— одно или несколько событий задержки, которые нужно сбросить. Если аргумент не указан, сбрасываются все события.
memory usage¶
MEMORY USAGE key [SAMPLES count]
Показывает объём ОЗУ, занимаемый указанным ключом key. Параметр
SAMPLES позволяет указать число дочерних элементов ключа (если такие
имеются), объём которых также будет учтён. По умолчанию, значение
SAMPLES равно 5. Для учёта всех дочерних элементов следует указать
SAMPLES 0.
slowlog get¶
SLOWLOG GET [count]
Возвращает записи из медленного журнала в хронологическом порядке.
Параметры и варианты использования:
count— количество последних записей медленного журнала, которые нужно вернуть. Значение-1возвращает все записи. По умолчанию возвращается 10 записей.
Подробности:
- Медленный журнал фиксирует запросы, время выполнения которых превысило заданный порог.
- Время выполнения не включает операции ввода-вывода: взаимодействие с клиентом, отправку ответа и подобные действия. Учитывается только время фактического выполнения команды, то есть участок, на котором поток заблокирован и не может обслуживать другие запросы.
- Новая запись добавляется, когда команда превышает порог, заданный параметром конфигурации
slowlog-log-slower-than. - Максимальное количество записей в журнале задается параметром
slowlog-max-len. - Каждая запись содержит уникальный последовательный идентификатор, Unix-метку времени выполнения команды, длительность выполнения в микросекундах, массив аргументов команды, IP-адрес и порт клиента, а также имя клиента, если оно задано командой CLIENT SETNAME.
- Уникальный идентификатор записи можно использовать, чтобы не обрабатывать одну и ту же запись несколько раз. Идентификатор не сбрасывается во время работы сервера и сбрасывается только при его перезапуске.
slowlog help¶
SLOWLOG HELP
Возвращает справку с описанием подкоманд SLOWLOG.
slowlog len¶
SLOWLOG LEN
Возвращает текущее количество записей в медленном журнале.
Подробности:
- Новая запись добавляется в медленный журнал, когда команда превышает порог времени выполнения, заданный параметром
slowlog-log-slower-than. - Максимальное количество записей в журнале задается параметром
slowlog-max-len. - Когда журнал достигает максимального размера, самая старая запись удаляется при добавлении новой.
- Очистить медленный журнал можно командой SLOWLOG RESET.
slowlog reset¶
SLOWLOG RESET
Очищает медленный журнал, удаляя из него все записи. После удаления эти сведения восстановить нельзя.
object encoding¶
OBJECT ENCODING key
Возвращает способ кодирования объекта, хранящегося по ключу key.
Варианты кодирования:
raw— стандартное кодирование текстовых строкquicklist— способ кодирования списков, совместимый с типамиlinkedlist,ziplistиlistpackв Redishashtable— стандартное кодирование множествskiplist— стандартное кодирование сортированных множеств
Команды для отладки¶
Команды с префиксом pico предназначены для отладки и диагностики
кластера в том случае, если отсутствует возможность подключиться к
Picodata другим способом.
Внимание!
Никаких гарантий на форматы вывода нет; любые попытки использования данных команд в работе приложения не поддерживаются!
pico status¶
admin dangerous pico
Отображает состояние команд для отладки (включено/выключено).
pico enable¶
admin dangerous pico
Включает использование команд для отладки.
pico disable¶
admin dangerous pico
Выключает использование команд для отладки.
pico sql¶
admin dangerous pico
Позволяет выполнить SQL-запрос в Redis-консоли.
Пример:
127.0.0.1:7379> pico sql "SELECT * FROM _pico_user WHERE schema_version=4"
1) "+----+------+----------------+------------------------------------------------+-------+------+"
2) "| id | name | schema_version | auth | owner | type |"
3) "+============================================================================================+"
4) "| 33 | andy | 4 | ['md5', 'md59ee8b0076cf18219f9b2f585f57d4d0c'] | 1 | user |"
5) "+----+------+----------------+------------------------------------------------+-------+------+"
6) "(1 rows)"
pico lua¶
admin dangerous pico
Позволяет выполнить Lua-запрос в Redis-консоли.
Пример:
127.0.0.1:7379> pico lua "return box.cfg.memtx_dir"
"data"