redis.conf

Тема дорожной карты · Redis

redis.conf — это основной файл конфигурации, который управляется каждым аспектом работы in-memory сервера Redis. Этот файл позволяет настроить сетевые параметры, персистентность данных, ограничения памяти и безопасность. Корректная настройка redis.conf является ключевым фактором для обеспечения стабильной и эффективной работы Redis. Основные директивы включают maxmemory для ограничения использования памяти, requirepass для обязательной аутентификации, bind для определения прослушиваемых интерфейсов и save для планирования RDB-снимков. Redis использует redis.conf при запуске, и многие параметры можно изменить в реальном времени с помощью команды CONFIG SET, что позволяет динамически управлять настройками без необходимости перезапуска сервера. Правильная настройка параметров, таких как tcp-keepalive, hz и lazyfree-lazy-eviction, напрямую влияет на задержку и пропускную способность Redis под реальными нагрузками.

Как это работает

redis.conf загружается при запуске Redis и содержит множество параметров, которые можно настроить. Файл конфигурации доступен через различные пакеты дистрибутива (apt/dnf), официальный tarball и make, Docker (redis:7-alpine) или управляемые облачные сервисы (Yandex Managed Redis, AWS ElastiCache). Конфигурационный файл обычно находится по пути /etc/redis/redis.conf. Критически важные параметры включают maxmemory, который ограничивает использование памяти; maxmemory-policy, определяющий стратегию вытеснения ключей при достижении лимита памяти (дефолтное значение allkeys-lru для чистого кеша); appendonly и appendfsync, которые контролируют AOF персистентность; save, который управляет созданием RDB-снимков; requirepass, который требует аутентификации; и bind, который ограничивает прослушиваемые интерфейсы.

Когда применять

Для разработки рекомендуется использовать Docker, что позволяет легко настроить и запустить Redis. Для продакшн-среды предпочтительнее использовать бар-металл или виртуальные машины, а также управляемые облачные сервисы. Важно всегда устанавливать параметр maxmemory ниже всего доступного объёма оперативной памяти, чтобы оставить запас для операций fork() при персистентности данных. Для чистого кеша рекомендуется использовать maxmemory-policy = allkeys-lru, а для микса ключей с TTL — volatile-lru. Если потеря данных при достижении лимита памяти является критической, следует использовать noeviction и самостоятельно обрабатывать ситуацию полного заполнения памяти. Кроме того, никогда не следует открывать порт 6379 для доступа из интернета; вместо этого следует ограничивать прослушиваемые интерфейсы только локальным хостом или приватной сетью.

Типичные ошибки

Часто встречаются ошибки при настройке redis.conf. Например, дефолтное значение bind 0.0.0.0 без пароля может привести к мгновенному компромиссу, так как Redis-сканеры повсюду ищут открытые серверы. Пропущенный параметр maxmemory на кеше может привести к исчерпанию памяти (OOM kill), что может привести к непредсказуемым последствиям. Использование параметра appendfsync always для AOF персистентности может значительно снизить пропускную способность Redis, так как каждая запись требует выполнения операции fsync. Также важно избегать использования хостов с поддержкой swap, так как пейджинг памяти может быть хуже, чем потеря данных (drop), для in-memory баз данных.

Связанные понятия

Полезные ресурсы