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

Описание конфигурации Radix

clients

max_clients

Максимальное количество клиентов, которые могут подключиться к одному узлу Radix. При достижении максимального числа max_clients новые соединения будут отклоняться, пока количество клиентов не станет снова меньше max_clients. Отклонённые соединения увеличивают счётчик метрики rejected_connections (пока доступна только через INFO STATS).

max_input_buffer_size

Максимальный размер входящего буфера. Если данный параметр у соединения будет превышен, то соединение будет закрыто. Закрытые по этой причине соединения увеличивают счётчик метрики client_query_buffer_limit_disconnections (пока доступна только через INFO STATS).

max_output_buffer_size

Максимальный размер исходящего буфера. Если данный параметр у соединения будет превышен, то соединение будет закрыто. Закрытые по этой причине соединения увеличивают счётчик метрики client_output_buffer_limit_disconnections (пока доступна только через INFO STATS).

redis_compatibility

enabled_deprecated_commands

Список устаревших команд Redis через запятую, которые будут доступны при работе с Radix. Устаревшие команды выключены по умолчанию. Для включения, добавьте их в файл конфигурации в формате ["command", "other"], где command и other — названия желаемых команд в нижнем регистре.

enforce_one_slot_transactions

Включает режим, в котором в транзакциях могут участвовать ключи только из одного слота (как и в Redis Cluster). Если он выключен — в транзакциях могут участвовать ключи из всего репликасета (между слотами), как в Redis Standalone. В этом случае вы можете эмулировать Redis Standalone, развернув Radix в составе одного репликасета.

Значение по умолчанию: false (выключено).

push_result_includes_popped_items

Включает режим, в котором элементы списков и сортированных множеств, отправившиеся в блокирующие команды, учитываются в выходных значениях команд LPUSH, RPUSH, ZADD, ZUNIONSTORE, ZRANGESTORE, ZDIFFSTORE и ZINTERSTORE.

Согласно документации Redis, команды, добавляющие элементы в списки и множества, должны возвращать количество, соответственно вставленных записей. Однако, если список/множество не содержит элементов, и при этом есть клиенты, которые ожидают вставки в него через блокирующие команды (BLPOP, например), то часть записей вставлены не будут, а вместо этого возвратятся этим клиентам — Radix вернёт только количество действительно вставленных элементов. Если нужно поведение как в Redis (то есть, необходимо вернуть и количество элементов, улетевших в BLPOP и аналогичные команды), выставите эту настройку в true.

disable_scatter_gather

Отключает режим опроса кластера для следующих команд:

  • Очищение базы данных: FLUSH, FLUSHALL, FLUSHDB SCRIPT FLUSH.
  • Информация о ключах: DBSIZE, KEYS, SCAN.
  • PUBSUB: PUBSUB CHANNELS, PUBSUB NUMSUB.

То есть при выставлении disable_scatter_gather = true, команда исполняется только на одном узле как в Redis Cluster, а при disable_scatter_gather = false по всем данным как в Redis Standalone, даже если Radix запущен на нескольких репликасетах.

По умолчанию - true.

include_radix_section_in_info_by_default

Добавляет секцию "Radix" в команду INFO с информацией о плагине и Picodata. Пример:

127.0.0.1:6379> info
# Server
redis_version:8.0.0
redis_git_sha1:78e076758e31fb7ddc2d62b09ae14435868b8f9f
... # остальные поля и секции

# 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

Значение по умолчанию — true.

cluster_mode

Данная настройка влияет только на вывод команды info cluster.

sentinel_enabled

Включает режим совместимости с Redis Sentinel.

В приложении требуется прописать адреса Radix в качестве адресов Sentinel. В качестве service_name укажите имена репликасетов, на которых развёрнут Radix (например, если в кластере 1 репликасет на тире default, то по умолчанию имя репликасета будет default_1). В качестве адреса Sentinel укажите адрес любого инстанса Radix.

Для примера, если в кластере нескольких тиров, а Radix развёрнут на тирах hot с двумя репликасетами и cold — с четырьмя, то получится такая топология:

# вариант топологии Radix
hot:
  hot_1:
  - hot_1_1
  - hot_1_2
  hot_2:
  - hot_2_1
  - hot_2_2
cold:
  cold_1:
  - cold_1_1
  - cold_1_2
  cold_2:
  - cold_2_1
  - cold_2_2
  cold_3:
  - cold_3_1
  - cold_3_2
  cold_4:
  - cold_4_1
  - cold_4_2

Следует указывать названия service_name и адреса из одного тира. Если использовать в качестве адреса для Sentinel адрес реплики из другого тира, то такая конфигурация не будет работать.

max_defer_actions_per_iteration

Максимальное количество действий, которые модуль обработки TTL будет выполнять за одну итерацию. По умолчанию — 100.

authorization_mode

Управляет состоянием авторизации в Radix. Доступные поля и их значения:

  • state — параметр, отвечающий за режим авторизации. Возможные значения:
    • disabled — авторизация выключена. Начиная с версии 1.0.5 это значение является устаревшим и не позволяет запустить Radix.
    • enabled — авторизация включена (значение по умолчанию). Для доступа нужно авторизоваться с помощью команды AUTH
  • default_user_name — имя пользователя по умолчанию. Значение по умолчанию — default. См. подробнее.
  • aclfile — Опциональное поле, указывающее расположение файла для команд ACL SAVE и ACL LOAD. Если поле не указано, то вызов этих команд завершится с ошибкой. Путь до файла считается относительно директории, в которой был запущен процесс picodata (не от instance-dir). Для удобства рекомендуется использовать полный путь до файла. В отличие от Redis Cluster, в Radix достаточно иметь данный файл на одном узле, а загруженные права хранятся в кластере в одном экземпляре (загрузив aclfile на одном узле, пользователи и их права будут одинаковы на всем кластере).

eviction

Управляет механизмом вытеснения ключей.

По умолчанию не задано, то есть выключено.

policy

Возможные стратегии вытеснения:

  • noeviction — вытеснение выключено
  • volatile-* — могут быть вытеснены только ключи с TTL:
    • volatile-lru — вытесняются наиболее давно использованные
    • volatile-lfu — вытесняются наименее часто используемые
    • volatile-random — вытесняются случайные
    • volatile-ttl — вытесняются с наименьшим TTL
  • allkeys-* — могут быть вытеснены любые ключи:
    • allkeys-lru — вытесняются наиболее давно использованные
    • allkeys-lfu — вытесняются наименее часто используемые
    • allkeys-random — вытесняются случайные

max_samples

Количество ключей в каждой базе данных, участвующих в выборе лучшего кандидата для вытеснения. Чем больше значение параметра, тем медленнее и точнее работает алгоритм.

По умолчанию равен 5.

lfu_decay_time

Период затухания счётчика использования ключа в минутах. Чем больше значение параметра, тем медленнее уменьшается счётчик.

По умолчанию равен 60, то есть каждый час счётчик использования уменьшается на единицу.

lfu_log_factor

Определяет, насколько медленно будет расти счётчик использования. Чем больше значение параметра, тем медленнее увеличивается счётчик.

По умолчанию равен 10, то есть счётчик использования увеличивается на единицу каждые 10 доступов к ключу.

watermark

Уровень квоты памяти, при достижении которого начинает работать вытеснение. Например, если memtx.memory выставлен в 100 МБ и watermark в 0.75, то вытеснение работает, когда данные занимают более 75 МБ.

По умолчанию параметр равен 0.81 (если у Picodata arena_used_ratio > 0.9 и items_used_ratio > 0.9, то она находится в состоянии нехватки памяти).

tenacity

"Упорство" алгоритма — целое число от 0 до 100 включительно, определяющее, насколько долго может работать вытеснение перед исполнением команды. Чем больше значение параметра, тем больше таймаут. Если время исполнения превышает таймаут, алгоритм переходит в работу в фоновом режиме и освобождение места после исполнения команды не гарантируется.

В таблице ниже приведены некоторые значения параметров и соответствующая длина таймаута.

Значение tenacity Поведение
0 Вытеснение происходит только в фоне
10 Переход в работу в фоне после 500 миллисекунд
50 Переход в работу в фоне после 134 секунд
70 Переход в работу в фоне после 36 минут
100 Вытеснение происходит синхронно

Формула расчета: $$ f(t) = \begin{cases} 50t, & \text{если } 0 \le t \le 10, \\ 500 \times 1.15^{\,t-10}, & \text{если } 11 \le t \le 99, \\ +\infty, & \text{если } t = 100. \end{cases} $$

latency_monitor_threshold_ms

Порог мониторинга задержек в миллисекундах. События, длительность которых превышает данный порог, записываются в историю задержек и доступны через команды LATENCY LATEST, LATENCY HISTORY, LATENCY GRAPH и сбрасываются командой LATENCY RESET.

Установите 0 для отключения мониторинга задержек.

По умолчанию — 0 (отключено).

Команда LATENCY HISTOGRAM строит гистограмму задержек по статистике каждой команды и работает независимо от этого порога.

ALTER PLUGIN radix 1.1.1 SET radix.latency_monitor_threshold_ms = '1';

slowlog_log_slower_than_us

Порог записи в slowlog в микросекундах. Команды, выполняющиеся дольше указанного времени, записываются в slowlog и доступны через семейство команд SLOWLOG (SLOWLOG GET, SLOWLOG LEN, SLOWLOG RESET).

  • Установите 0 для записи каждой команды.
  • Установите -1 для полного отключения slowlog.

По умолчанию — 10000 (10 миллисекунд).

ALTER PLUGIN radix 1.1.1 SET radix.slowlog_log_slower_than_us = '0';

slowlog_max_len

Максимальное количество записей в slowlog. При превышении лимита самые старые записи удаляются.

По умолчанию — 128.

ALTER PLUGIN radix 1.1.1 SET radix.slowlog_max_len = '256';

debug

Настройки для отладки работы Radix и Picodata.

pico_commands_enabled

Включает семейство команд PICO:

  • PICO ENABLE — включить команды PICO LUA и PICO SQL для текущего соединения (выключены по умолчанию)
  • PICO STATUS — получить статус доступности команд PICO LUA и PICO SQL для текущего соединения
  • PICO DISABLE — выключить команды PICO LUA и PICO SQL для текущего соединения
  • PICO LUA <script> — исполнить Lua-скрипт в Picodata.
  • PICO SQL <script> — исполнить SQL-скрипт в Picodata.

Все команды семейства входят в категории debug, slow и dangerous, причём доступ соответствует выданным правам авторизованного пользователя.