Описание конфигурации 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,FLUSHDBSCRIPT 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,
причём доступ соответствует выданным правам авторизованного
пользователя.