Skip to content
EN

Настройка памяти Redis

Коротко:

Установите maxmemory = 75% RAM сервера и maxmemory-policy = allkeys-lru (или volatile-lru если используете TTL). Следите за used_memory_rss / used_memory в INFO — ratio > 1.5 = fragmentation, запустите MEMORY PURGE. MEMORY USAGE показывает размер конкретного ключа. Больше всего памяти обычно жрут большие hashes и sets без TTL.

Ниже: подробности, пример, смежные термины, FAQ.

Проверить свой сайт →

Детали

  • maxmemory-policy: allkeys-lru (default для cache), volatile-lru (для mixed cache+store)
  • MEMORY DOCTOR даёт recommendations прямо из Redis
  • Fragmentation: jemalloc обычно справляется, но после массового DEL может достичь 2x
  • redis-cli --bigkeys сканирует и показывает top ключей по размеру
  • Active defragmentation: activedefrag yes в конфиге

Пример

# Быстрый memory audit
$ redis-cli --bigkeys

# top-10 ключей по размеру
$ redis-cli --memkeys --memkeys-samples 100

# Проверить один ключ
$ redis-cli MEMORY USAGE sessions:user:1234
(integer) 2048

# Rebalance/defrag
$ redis-cli CONFIG SET activedefrag yes
$ redis-cli MEMORY PURGE

Связанные

Как правильно настроить память Redis

Для настройки памяти Redis необходимо использовать директиву maxmemory, которая определяет максимальный объем памяти, доступный для хранения данных. Рекомендуется установить это значение в пределах 50-75% от доступной оперативной памяти на сервере. Например, для сервера с 8 ГБ ОЗУ можно установить maxmemory 6gb. Также важно настроить политику удаления данных с помощью директивы maxmemory-policy, чтобы обеспечить эффективное управление памятью.

Оптимизация использования памяти в Redis

Оптимизация памяти в Redis включает в себя несколько ключевых аспектов. Во-первых, важно выбрать правильный тип данных для хранения информации. Например, использование hash вместо string может существенно снизить объем используемой памяти при хранении множества небольших элементов.

Во-вторых, настройка параметров active-defrag и lazyfree может помочь в улучшении управления памятью. active-defrag отвечает за активную дефрагментацию памяти, что позволяет Redis более эффективно использовать доступное пространство. Чтобы включить эту функцию, добавьте в файл конфигурации:

active-defrag yes

В-третьих, важно следить за использованием памяти с помощью команды INFO memory, которая предоставляет информацию о текущем использовании памяти и фрагментации. Это поможет выявить потенциальные проблемы и оптимизировать конфигурацию.

Пример настройки Redis для оптимальной работы

Рассмотрим практический пример настройки Redis для оптимальной работы с памятью. Предположим, у вас есть сервер с 16 ГБ оперативной памяти, и вы хотите выделить 12 ГБ для Redis. В этом случае вам нужно внести следующие изменения в файл конфигурации redis.conf:

maxmemory 12gb

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

  • noeviction — не удалять данные, если память исчерпана;
  • allkeys-lru — удалять менее используемые ключи;
  • volatile-lru — удалять менее используемые ключи только среди тех, у которых установлен срок действия.

Для установки политики allkeys-lru, добавьте в конфигурацию:

maxmemory-policy allkeys-lru

После внесения изменений перезапустите Redis для применения новых настроек. Используя команды CONFIG GET maxmemory и CONFIG GET maxmemory-policy, можно проверить, что изменения были успешно применены.

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

TL;DR

Для настройки памяти Redis необходимо определить объем доступной памяти, установить параметр maxmemory в конфигурационном файле redis.conf, а также выбрать стратегию удаления данных (например, volatile-lru или allkeys-lru). Рекомендуется выделять не более 75% от общей доступной памяти для Redis.

Основные параметры настройки памяти Redis

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

  • maxmemory: Этот параметр определяет максимальный объем памяти, который Redis может использовать. Установка этого параметра поможет избежать ситуации, когда Redis потребляет всю доступную память на сервере.
  • maxmemory-policy: Определяет стратегию удаления данных, когда Redis достигает лимита памяти. Вы можете выбрать различные политики, такие как noeviction, allkeys-lru, volatile-lru и другие.
  • maxmemory-samples: Этот параметр определяет количество ключей, которые Redis будет проверять для выбора ключа для удаления, если срабатывает политика lru.

Для начала, вам нужно определить общий объем памяти, доступный на вашем сервере. Например, если у вас есть сервер с 8 ГБ оперативной памяти, рекомендуется установить maxmemory на уровне 6 ГБ, чтобы оставить место для других процессов и избежать свопинга.

Пример конфигурации:

maxmemory 6gb
maxmemory-policy allkeys-lru
maxmemory-samples 5

После внесения изменений в redis.conf необходимо перезапустить Redis для применения новых настроек. Это можно сделать с помощью команды:

sudo systemctl restart redis

Следует также учитывать, что при использовании Redis в качестве кеша, выбор правильной стратегии удаления данных может существенно повлиять на производительность приложения. Например, если вы используете volatile-lru, Redis будет удалять только те ключи, которые имеют установленный срок жизни, что может быть полезно для управления временными данными.

Оценка 0–100Единый балл здоровья сайта
SSL + SecurityБезопасность и сертификат
ПроизводительностьСкорость ответа и кеширование
SEO-сигналыrobots.txt, sitemap, каноникалы

Почему нам доверяют

100
балльная шкала
SSL
SSL + HTTP заголовки
10+
критериев оценки
Free
без регистрации

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

1

Введите URL сайта

2

Анализируем 10+ факторов

3

Получите общий балл

Что такое Health Score?

Health Score — комплексная оценка технического состояния сайта по 20+ параметрам: SSL, заголовки безопасности, скорость ответа, SEO-технические факторы и доступность.

Комплексная оценка

20+ параметров в одном числе: SSL, заголовки, скорость, SEO-технические факторы.

Детальный разбор

Каждый параметр с объяснением — что проверяется, что найдено, как исправить.

Динамика изменений

Сравнивайте Health Score в разные даты — видите прогресс или регресс.

Мониторинг здоровья

Настройте автоматическую проверку Health Score и получайте уведомление при падении балла.

Кому это нужно

Разработчики

быстрый аудит перед релизом

SEO-специалисты

оценка технической базы

Маркетологи

проверка сайта клиента

Безопасники

экспресс-аудит заголовков

Частые ошибки

Игнорировать красные параметрыКрасный параметр — критичная проблема. Начинайте исправление с них, не с жёлтых.
Проверять только главнуюПроблема может быть на подстраницах. Проверяйте ключевые разделы и посадочные страницы.
Не перепроверять после правокПосле каждого исправления перезапустите проверку и убедитесь, что балл вырос.
Считать 80+ баллов достаточнымСтремитесь к 95+. Каждый красный пункт — это риск для SEO или безопасности.

Лучшие практики

Исправляйте по приоритетамКрасные > жёлтые > синие. Критичные проблемы сначала.
Проверяйте регулярноЕженедельная проверка Health Score помогает заметить деградацию до того, как она влияет на SEO.
Используйте мониторингПодключите автоматический HTTP-монитор — он первым заметит недоступность.
Сравнивайте с конкурентамиПроверьте Health Score ближайшего конкурента — это отличный ориентир для приоритизации.

Получите больше с бесплатным аккаунтом

История Health Score проверок и мониторинг состояния сайта в реальном времени.

Зарегистрироваться (FREE)

Больше по теме

Часто задаваемые вопросы

Когда менять allkeys-lru → allkeys-lfu?

Если рабочая нагрузка — чёткая hot/cold partition (часть ключей читают вечно, другие — редко). LFU выигрывает для classic skewed workload.

Можно ли Redis в production без persistence?

Да для чистого cache (session, counter). Если данные не восстановимы — включите AOF everysec.

Sharding или Cluster?

Redis Cluster — встроенный sharding (up to 1000 nodes). Для < 100 GB чаще sentinel + sharding в application.

Запустить инструмент, который описан в этой статье

Бесплатный тариф — 10 мониторов, проверки каждые 5 мин, без карты. Платные тарифы — интервал от 1 минуты и проверки из нескольких регионов.