Radix¶
В данном разделе приведены сведения о Radix, плагине для СУБД Picodata.
Picodata Enterprise
Функциональность плагина доступна только в коммерческой версии Picodata.
Общие сведения¶
Radix — реализация Redis на базе Picodata, предназначенная для замены существующих инсталляций Redis.
Плагин Radix состоит из одноименного сервиса (radix
), реализующего
Redis на базе СУБД Picodata. Каждый экземпляр Radix открывает еще один
порт для подключения в дополнение к уже открытым.
При использовании Picodata c плагином Radix нет необходимости в отдельной инфраструктуре Redis Sentinel, так как каждый узел Picodata выполняет роль прокси ко всем данным Redis.
Установка¶
Предварительные действия¶
Установка плагина Radix соответствует общей процедуре установки плагинов в Picodata.
В частности, набор шагов включает:
- установку переменной окружения
RADIX_ADDR
для адреса Redis-сервера, напримерRADIX_ADDR=0.0.0.0:7379
- запуск инстанса Picodata с поддержкой плагинов (параметр
--share-dir
) - распаковка архива Radix в директорию, указанную на предыдущем шаге
- подключение к административной консоли инстанса
- выполнение SQL-команд для регистрации плагина, привязки его сервиса к тиру, выполнения миграции, включения плагина в кластере
Подключение плагина¶
Выполните следующие SQL-команды в административной консоли Picodata:
CREATE PLUGIN radix 0.2.0;
ALTER PLUGIN radix 0.2.0 ADD SERVICE radix TO TIER default;
ALTER PLUGIN radix MIGRATE TO 0.2.0;
ALTER PLUGIN radix 0.2.0 ENABLE;
Чтобы убедиться в том, что плагин успешно добавлен и запущен, выполните запрос:
SELECT * FROM _pico_plugin;
В строке, соответствующей плагину Radix, в колонке enabled
должно быть значение true
.
Использование¶
В консоли для общения с Redis используется клиентская программа
redis-cli.
Для подключения к инстансу Picodata по протоколу Redis
используйте адрес, заданный ранее в переменной RADIX_ADDR
:
redis-cli -p 7379
Поддерживаемые команды¶
Управление кластером¶
ping¶
PING [message]
Возвращает PONG
, если аргумент не указан, в противном случае
возвращает строкой аргумент, который пришел. Эта команда полезна для:
- проверки того, живо ли еще соединение
- проверки способности сервера обслуживать данные — ошибка возвращается, если это не так (например, при загрузке из постоянного хранилища или обращении к устаревшей реплике)
- измерения задержки
Управление соединениями¶
select¶
SELECT index
Получение логической базы данных Redis с указанным нулевым числовым индексом. Новые соединения всегда используют базу данных 0.
Общие команды¶
del¶
DEL key [key ...]
Удаляет указанные ключи. Несуществующие ключи игнорируются.
exists¶
EXISTS key [key ...]
Проверяет, существует ли указанный ключ key
и возвращает число совпадений.
Например, запрос EXISTS somekey somekey
вернет 2
.
expire¶
EXPIRE key seconds [NX | XX | GT | LT]
Устанавливает срок жизни (таймаут) для ключа key
. По истечении таймаута ключ
будет автоматически удален. В терминологии Redis ключ с установленным
тайм-аутом часто называют волатильным.
Тайм-аут будет сброшен только командами, которые удаляют или перезаписывают содержимое ключа, включая DEL, SET и GET/SET. Это означает, что все операции, которые концептуально изменяют значение, хранящееся в ключе, не заменяя его новым, оставляют таймаут нетронутым.
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
, превращая его из непостоянного
(ключ с установленным сроком действия) в постоянный (ключ, срок действия
которого никогда не истечет, поскольку таймаут для него не установлен).
scan¶
SCAN cursor [MATCH pattern] [COUNT count] [TYPE type]
Команда SCAN
используется для инкрементного итерационного просмотра
коллекции элементов в выбранной в данный момент базе данных Redis.
ttl¶
TTL key
Возвращает оставшееся время жизни ключа key
, для которого установлен
таймаут. Эта возможность интроспекции позволяет клиенту Redis проверить,
сколько секунд данный ключ будет оставаться частью набора данных.
Команда возвращает -2
, если ключ не существует.
Команда возвращает -1
, если ключ существует, но не имеет связанного с
ним истечения срока действия.
type¶
TYPE key
Возвращает строковое представление типа значения, хранящегося по адресу
ключа key
. Могут быть возвращены следующие типы:
string
list
set
zset
hash
stream
Хэш-команды¶
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
.
hscan¶
HSCAN key cursor [MATCH pattern] [COUNT count] [NOVALUES]
Работает подобно SCAN, но с некоторым отличием: HSCAN
выполняет итерацию полей типа Hash и связанных с ними значений.
hset¶
HSET key field value [field value ...]
Устанавливает указанные поля в соответствующие им значения в хэше,
хранящемся по адресу ключа key
.
Эта команда перезаписывает значения указанных полей, которые существуют в хэше. Если ключ не существует, создается новый ключ, содержащий хэш.
Команды для строк¶
get¶
GET key
Получает значение ключа key
. Если ключ не существует, возвращается
специальное значение nil
. Если значение, хранящееся в ключе, не
является строкой, возвращается ошибка, поскольку GET
работает только
со строковыми значениями.
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
, не является строкой.