[Документация Yandex Cloud](../../index.md) > [Yandex Managed Service for Valkey™](../index.md) > [Концепции](index.md) > Настройки Valkey™

# Настройки Valkey™

Для кластера Yandex Managed Service for Valkey™ можно задать настройки, которые относятся к Valkey™.

Метки рядом с названием настройки позволяют определить, с помощью какого интерфейса задается значение этой настройки: консоль управления, CLI, [API](../../glossary/rest-api.md) или Terraform. Метка <code><b><small>Все интерфейсы</small></b></code> указывает, что поддерживаются все перечисленные интерфейсы.

В зависимости от выбранного интерфейса, одна и та же настройка будет представлена по-разному, например, **Maxmemory policy** в консоли управления соответствует:

- `maxmemory_policy` в gRPC API, Terraform;
- `maxmemoryPolicy` в REST API.

## Настройки СУБД {#dbms-settings}

Доступны следующие настройки:

* **Activedefrag**{#settings-activedefrag} <code><b><small>Консоль управления</small></b></code> <code><b><small>CLI</small></b></code> <code><b><small>API</small></b></code>

    Включает активную дефрагментацию памяти в кластере. Это помогает уменьшить фрагментацию памяти, которая может приводить к проблемам с нехваткой памяти. Не рекомендуется включать настройку, если проблем с фрагментацией памяти нет.

    По умолчанию настройка выключена.

    Подробнее в [документации Valkey™](https://github.com/valkey-io/valkey/blob/8.0/valkey.conf#L2291).

* **Allow data loss**{#settings-allow-data-loss} <code><b><small>Все интерфейсы</small></b></code>

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

    Если флаг отключить, операции переключения мастера будут ждать полной синхронизации реплик, что гарантирует сохранность всех данных. Но если более 50% хостов одновременно выйдут из строя, новый мастер не будет выбран и операции записи станут недоступны. В этом случае потребуется выбрать новый мастер вручную, однако данные не потеряются и будут сохранены после выборов мастера и синхронизации реплик.

    По умолчанию настройка выключена.

* **Aof max size percent**{#settings-aof-max-size} <code><b><small>Все интерфейсы</small></b></code>

    Максимальный размер [файла AOF](replication.md#persistence) в процентах от размера диска. При превышении этого размера новые запросы на запись блокируются, что позволяет избежать переполнения диска.

    Минимальное значение — `1`, максимальное значение — `100`, значение по умолчанию — `99`.

* **Client output buffer limit normal**{#settings-limit-normal} <code><b><small>Все интерфейсы</small></b></code>

    Ограничение объема выходного буфера для обычных клиентов.

    Valkey™ использует выходной буфер для временного хранения данных, сгенерированных запросом, перед отправкой в клиент. Если клиент отправляет новые запросы быстрее, чем Valkey™ успевает обрабатывать текущие, это приводит к увеличению размера буфера.

    Настройка включает в себя следующие параметры:

    * **Hard limit** — жесткое ограничение объема буфера (в байтах). При превышении указанного значения соединение с клиентом будет немедленно прервано. Минимальное значение — `0` (ограничение отсутствует). Значение по умолчанию определяется ограничениями скорости сети, зависящими от конфигурации виртуальной машины. В консоли управления единицы измерения задаются параметром **Hard limit unit**.
    * **Soft limit** — мягкое ограничение объема буфера (в байтах). Соединение с клиентом будет прервано только если превышение указанного значения сохранялось в течение времени, заданного параметром **Soft seconds**. Минимальное значение — `0` (ограничение отсутствует). Значение по умолчанию — `<значение_Hard_limit>/2`. В консоли управления единицы измерения задаются параметром **Soft limit unit**.
    * **Soft seconds** — время (в секундах), в течение которого допустимо превышение мягкого ограничения объема буфера. Минимальное значение — `0`. Значение по умолчанию — `60`.

    Подробную информацию о настройке читайте в [документации Valkey™](https://valkey.io/topics/clients/#output-buffer-limits).

* **Client output buffer limit pubsub**{#settings-limit-pubsub} <code><b><small>Все интерфейсы</small></b></code>

    Ограничение объема выходного буфера для клиентов, работающих в парадигме [Pub/Sub](https://valkey.io/topics/pubsub/).

    Valkey™ использует выходной буфер для временного хранения данных, сгенерированных запросом, перед отправкой в клиент. Если клиент отправляет новые запросы быстрее, чем Valkey™ успевает обрабатывать текущие, это приводит к увеличению размера буфера.

    Настройка включает в себя следующие параметры:

    * **Hard limit** — жесткое ограничение объема буфера (в байтах). При превышении указанного значения соединение с клиентом будет немедленно прервано. Минимальное значение — `0` (ограничение отсутствует). Значение по умолчанию — `33554432` (32 МБ). В консоли управления единицы измерения задаются параметром **Hard limit unit**.
    * **Soft limit** — мягкое ограничение объема буфера (в байтах). Соединение с клиентом будет прервано только если превышение указанного значения сохранялось в течение времени, заданного параметром **Soft seconds**. Минимальное значение — `0` (ограничение отсутствует). Значение по умолчанию — `8388608` (8 МБ). В консоли управления единицы измерения задаются параметром **Soft limit unit**.
    * **Soft seconds** — время (в секундах), в течение которого допустимо превышение мягкого ограничения объема буфера. Минимальное значение — `0`, значение по умолчанию — `60`.

    Подробную информацию о настройке читайте в [документации Valkey™](https://valkey.io/topics/clients/#output-buffer-limits).

* **Cluster allow pubsubshard when down**{#settings-cluster-allow-pubsub} <code><b><small>Все интерфейсы</small></b></code>

    Если флаг включен, хостам разрешено обслуживать запросы приложений к [шардированным каналам Pub/Sub](https://valkey.io/topics/pubsub#sharded-pub-sub) и перенаправлять их на выделенный для этого хеш-слот шарда, если кластер находится в неработоспособном состоянии.

    По умолчанию настройка выключена.

    Подробнее в [документации Valkey™](https://github.com/valkey-io/valkey/blob/8.0/valkey.conf#L1762).

* **Cluster allow reads when down**{#settings-cluster-allow-reads} <code><b><small>Все интерфейсы</small></b></code>

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

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

    По умолчанию настройка выключена.

    Подробнее в [документации Valkey™](https://github.com/valkey-io/valkey/blob/8.0/valkey.conf#L1746).

* **Cluster require full coverage**{#settings-cluster-require-full-coverage} <code><b><small>Все интерфейсы</small></b></code>

     Если флаг включен, хосты перестают принимать запросы, когда по крайней мере один хеш-слот не открыт (ни один доступный хост его не обслуживает). Таким образом, если в кластере есть недоступные хеш-слоты, весь кластер становится недоступным.

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

    Подробнее в [документации Valkey™](https://github.com/valkey-io/valkey/blob/8.0/valkey.conf#L1723).

* **Databases**{#settings-databases} <code><b><small>Все интерфейсы</small></b></code>

    Количество баз данных.

    Valkey™ использует концепцию логических баз данных, которые изолированы друг от друга. Операции с ключами и значениями в одной базе не влияют на данные в других базах. Каждая база идентифицируется своим номером (от `0` до `Databases − 1`).

    Минимальное значение — `1`, максимальное значение — `2147483647`, значение по умолчанию — `16`.

    Подробнее в [документации Valkey™](https://github.com/valkey-io/valkey/blob/8.0/valkey.conf#L379).

    {% note warning %}

    Изменение этого параметра приведет к перезапуску всех запущенных нод Valkey™.

    {% endnote %}

* **Io threads allowed**{#settings-io-threads-allowed} <code><b><small>Все интерфейсы</small></b></code>

    Если флаг включен, операции чтения и записи обрабатываются в разных потоках ввода-вывода (I/O threads). Это повышает производительность нешардированного кластера. Не рекомендуется включать настройку в кластерах, в которых количество ядер CPU для хоста меньше 4.

    По умолчанию настройка выключена.

    Подробнее в [документации Valkey™](https://github.com/valkey-io/valkey/blob/8.0/valkey.conf#L1317).

* **Lfu decay time**{#settings-lfu-decay-time} <code><b><small>Все интерфейсы</small></b></code>

    Параметр предназначен для настройки [режимов управления памятью](#settings-maxmemory-policy) `volatile-lfu` и `allkeys-lfu`. Он определяет промежуток времени в минутах, который должен пройти, чтобы значение счетчика LFU ключа (показатель востребованности ключа) уменьшилось.

    Минимальное значение — `0` (счетчик LFU никогда не уменьшается), значение по умолчанию — `1`.

    Подробнее в [документации Valkey™](https://valkey.io/topics/lru-cache/#the-lfu-mode).

* **Lfu log factor**{#settings-lfu-log-factor} <code><b><small>Все интерфейсы</small></b></code>

    Параметр предназначен для настройки [режимов управления памятью](#settings-maxmemory-policy) `volatile-lfu` и `allkeys-lfu`. Он определяет, насколько быстро увеличивается значение счетчика LFU ключа (показателя востребованности ключа) с ростом количества обращений к ключу. Практически это значит, что каждое значение параметра задает некий уровень точности определения наиболее и наименее востребованных ключей.

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

    1. Генерируется случайное число R в интервале от 0 до 1.
    1. Вычисляется вероятность P увеличения счетчика по формуле:

       ```text
       1 / (<текущее_значение_счетчика_LFU> × lfu_log_factor + 1)
       ```

    1. Счетчик увеличивается на 1, если R < P.

    Минимальное значение — `0`, значение по умолчанию — `10`.

    Подробнее в [документации Valkey™](https://valkey.io/topics/lru-cache/#the-lfu-mode).

* **Lua time limit**{#settings-lua-time-limit} <code><b><small>Консоль управления</small></b></code> <code><b><small>CLI</small></b></code> <code><b><small>API</small></b></code>

    Максимальное время выполнения Lua-скрипта (в миллисекундах).

    Допустимые значения — от `0` до `5000`. Значение по умолчанию — `5000`. `0` — время выполнения не ограничено.

    При изменении не влияет на работу уже запущенного скрипта.

    Подробнее в [документации Valkey™](https://github.com/valkey-io/valkey/blob/9.0/valkey.conf#L1732).

* **Maxmemory percent**{#settings-maxmemory-percent} <code><b><small>Все интерфейсы</small></b></code>

    Максимальный процент оперативной памяти, который будет выделен для пользовательских данных на хостах кластера Yandex Managed Service for Valkey™.

    Минимальное значение — 1, максимальное значение — 75, значение по умолчанию — 75.

    {% note info %}

    Понижение максимального процента понизит вместимость базы данных. Это может быть полезно, если в базе наблюдаются проблемы с OOM Killer (Out of Memory Killer).

    {% endnote %}

* **Maxmemory policy**{#settings-maxmemory-policy} <code><b><small>Все интерфейсы</small></b></code>

    Режим управления памятью при ее дефиците.

    * `volatile-lru` — удалять ключи с истекшим (expired) сроком жизни (Time-To-Live, TTL), начиная с наиболее давно использованного (least recently used, LRU);
    * `volatile-lfu` — удалять ключи с истекшим сроком жизни, начиная с наиболее редко используемого (least frequently used, LFU);
    * `volatile-ttl` — удалять ключи с истекшим сроком жизни, начиная с ключа с наименьшим сроком жизни;
    * `volatile-random` — удалять ключи с истекшим сроком жизни в произвольном порядке;
    * `allkeys-lru` — удалять ключи вне зависимости от их срока жизни, начиная с наиболее давно использованного;
    * `allkeys-lfu` — удалять ключи вне зависимости от их срока жизни, начиная с наиболее редко используемого;
    * `allkeys-random` — удалять ключи вне зависимости от их срока жизни в произвольном порядке;
    * `noeviction` (по умолчанию) — не удалять ключи. Вернуть ошибку, если для вставки данных недостаточно памяти.

    Подробнее в [документации Valkey™](https://valkey.io/topics/lru-cache).

* **Notify keyspace events**{#settings-notify-keyspace-events} <code><b><small>Все интерфейсы</small></b></code>

    Настройка уведомлений о событиях, происходящих в пространстве ключей.

    Значение — строка с модификаторами, которые управляют выводом уведомлений. Значение по умолчанию — пустая строка (вывод уведомлений отключен).

    Полный список модификаторов смотрите в [документации Valkey™](https://valkey.io/topics/notifications).

* **Repl backlog size percent**{#settings-repl-backlog-size} <code><b><small>Все интерфейсы</small></b></code>

    Размер лога репликации на мастере в процентах от размера диска. Чем больше размер лога, тем дольше реплика может оставаться работоспособной при сетевой недоступности мастера.

    Подробнее в [документации Valkey™](https://github.com/valkey-io/valkey/blob/8.0/valkey.conf#L740)

* **Slowlog log slower than**{#settings-slowlog-slower-than} <code><b><small>Все интерфейсы</small></b></code>

    Запросы, выполняющиеся дольше указанного времени (в микросекундах), считаются длительными. Такие запросы попадают в лог медленных запросов (slow log). При значении `0` в этот лог будут попадать все выполняемые запросы.

    Минимальное значение — `-1` (лог медленных запросов не ведется), максимальное значение — `9223372036854775807`, значение по умолчанию: `10000`.

    Подробнее в [документации Valkey™](https://valkey.io/commands/slowlog).

* **Slowlog max len**{#settings-slowlog-max-len} <code><b><small>Все интерфейсы</small></b></code>

    Максимальное количество записей в логе медленных запросов. При заполнении лога перед вставкой новых записей будут удалены самые старые.

    Минимальное значение — `0` (лог медленных запросов не ведется), максимальное значение — `9223372036854775807`, значение по умолчанию — `1000`.

    Подробнее в [документации Valkey™](https://valkey.io/commands/slowlog).

* **Timeout**{#settings-timeout} <code><b><small>Все интерфейсы</small></b></code>

    Время в секундах, в течение которого будет поддерживаться соединение с неактивными клиентами.

    Минимальное значение и значение по умолчанию — `0` (соединения не закрываются), максимальное значение — `2147483647`.

    Подробнее в [документации Valkey™](https://valkey.io/topics/clients).

* **Turn before switchover**{#settings-turn-before-switchover} <code><b><small>Все интерфейсы</small></b></code>

    Если флаг включен, [агент управления состоянием хоста](replication.md#availability) перед назначением нового мастера переключает реплику на хост нового мастера.

    По умолчанию настройка выключена.

* **Use luajit**{#settings-use-luajit} <code><b><small>Все интерфейсы</small></b></code>

    Если флаг включен, для обработки Lua-скриптов используется [LuaJIT](https://luajit.org/). Это может ускорять обработку при активном использовании скриптов.

    По умолчанию настройка выключена.

* **Zset max listpack entries**{#settings-zset-max-listpack} <code><b><small>Все интерфейсы</small></b></code>

    Если количество элементов упорядоченного множества ([Sorted Set](https://valkey.io/topics/sorted-sets/)) меньше указанного числа, то к элементам массива будет применяться специальная кодировка для уменьшения занимаемого места.

    Подробнее в [документации Valkey™](https://github.com/valkey-io/valkey/blob/8.0/valkey.conf#L2047).