Как установить Redis на Ubuntu 24.04: настройка Перейти к содержимому
+7 (920) 556-26-91 пн–пт: 10:00–19:00 (МСК)
Проконсультироваться Обсудить задачу

Инструкции

Как установить Redis на Ubuntu 24.04 и настроить память

Установка Redis на Ubuntu 24.04, настройка maxmemory и политики вытеснения, пароль, диагностика через redis-cli и правила безопасности.

Как установить Redis на Ubuntu 24.04 и настроить память

Короткий ответ: Redis ставится командой apt install redis-server и по умолчанию слушает только 127.0.0.1 — это правильное поведение, менять его не нужно. Для проверки используется redis-cli ping, который должен вернуть PONG. Обязательные настройки для рабочего сервера: ограничение памяти maxmemory, политика вытеснения maxmemory-policy и пароль requirepass, если к базе обращается несколько приложений.

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

Установка и проверка

apt update
apt install -y redis-server
systemctl enable --now redis-server
redis-cli ping

Ответ PONG означает, что сервер работает. Проверить версию и адрес прослушивания:

redis-cli info server | grep redis_version
ss -tlnp | grep 6379

В выводе ss адрес должен быть 127.0.0.1:6379. Если там 0.0.0.0:6379 — база доступна из интернета, и это нужно немедленно исправить.

Когда Redis действительно нужен

Задача Что даёт Redis
Кэш страниц и запросов Снимает повторяющиеся запросы с основной базы
Хранение сессий Сессии переживают перезапуск приложения и работают при нескольких процессах
Очереди задач Фоновые операции выполняются отдельно от пользовательского запроса
Счётчики и лимиты Быстрый подсчёт обращений и ограничение частоты
Блокировки Защита от одновременного выполнения одной операции

Если приложение состоит из одного процесса и работает с небольшой базой, Redis не нужен — он добавит точку отказа, не дав выигрыша. Он окупается там, где есть повторяющиеся тяжёлые запросы или несколько процессов.

Настройка памяти — самое важное

Redis хранит данные в оперативной памяти и без ограничения займёт всю доступную. Это классическая причина падения сервера.

Файл /etc/redis/redis.conf, ключевые директивы:

maxmemory 512mb
maxmemory-policy allkeys-lru
supervised systemd
appendonly no
Директива Смысл
maxmemory Потолок памяти. Ставить не более половины объёма ОЗУ сервера
maxmemory-policy Что делать при достижении потолка: allkeys-lru для кэша, noeviction для очередей
supervised systemd Управление службой через systemd
appendonly Журнал операций. Для чистого кэша не нужен, для очередей обязателен

Выбор политики вытеснения зависит от назначения. Для кэша подходит allkeys-lru: при заполнении удаляются давно не использованные ключи, и приложение просто перечитывает данные из основной базы. Для очередей и сессий нужен noeviction: лучше получить ошибку записи, чем молча потерять задачу.

После правки:

systemctl restart redis-server
redis-cli info memory | grep maxmemory_human
redis-cli config get maxmemory-policy

Пароль и доступ

requirepass ваш_длинный_пароль

При включённом пароле команды требуют аутентификации:

redis-cli -a ваш_длинный_пароль ping

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

Диагностика

Команда Что показывает
redis-cli info clients Число подключений
redis-cli info memory Потребление памяти и лимит
redis-cli info stats Число попаданий и промахов кэша
redis-cli info keyspace Сколько ключей в каждой базе
redis-cli --bigkeys Крупнейшие ключи — частый источник проблем с памятью
redis-cli monitor Поток команд в реальном времени. Только для отладки

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

Безопасность

  • Не открывайте порт 6379 наружу. Это самая частая и самая опасная ошибка.
  • Переименуйте опасные команды. Директива rename-command позволяет отключить FLUSHALL и CONFIG в рабочей среде.
  • Ограничьте память. Без maxmemory Redis вытеснит всё остальное с сервера.
  • Учтите, что данные в памяти. При перезапуске без журналирования кэш будет пуст — приложение должно это выдерживать.

Redis часто ставится рядом с PostgreSQL или MySQL: основная база хранит данные, Redis снимает повторяющиеся чтения. Для приложений на Node.js типовой набор — Node.js, PostgreSQL и Redis.