Radix¶
В данном разделе приведены сведения о Radix, плагине для СУБД Picodata.
Picodata Enterprise
Функциональность плагина доступна только в коммерческой версии Picodata.
Общие сведения¶
Radix — реализация Redis на базе Picodata, предназначенная для замены существующих инсталляций Redis.
Плагин Radix состоит из одноименного сервиса (rаdix
), который
поднимает отдельный порт и на нем сервер, имплементирующий бинарный
протокол Redis. Проще говоря, этот сервис просто позволяет обращаться к
Picodata как к Redis. В кластерном развертывании порт и сервер Redis
поднимаются на каждом узле кластера, при этом каждый узел предоставляет
доступ ко всем данным кластера. Возможен как вариант развертывания со
100% сохранностью данных, репликацией и георезервированием, так и
развертывание без журналирования, в режиме кэша.
При использовании Picodata c плагином Radix нет необходимости в отдельной инфраструктуре Redis Sentinel, так как каждый узел Picodata выполняет роль прокси ко всем данным Redis.
Установка¶
Предварительные действия¶
Установка плагина Radix соответствует общей процедуре установки плагинов в Picodata.
В частности, набор шагов включает:
- установку переменной окружения
RADIX_ADDR
для адреса Redis-сервера, напримерRADIX_ADDR=0.0.0.0:7379
- запуск инстанса Picodata с поддержкой плагинов (параметр --plugin-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
, не является строкой.