Перейти к содержанию

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 и hxllo
  • h*llo соответствует hllo и heeeello
  • h[ae]llo соответствует hello и hallo, но не hillo
  • h[^e]llo соответствует hallo, hbllo, ... но не hello
  • h[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, не является строкой.