цены сверены 22 октября 2026 года

Установка Redis на VPS с Ubuntu 24.04

Redis ставится из репозитория Ubuntu 24.04 командой sudo apt install redis-server. Он слушает только 127.0.0.1, и на маленьком сервере ему нужно задать лимит памяти: иначе он займёт сколько попросит приложение.

Установка Redis на VPS с Ubuntu 24.04
Содержание
  1. Как поставить Redis
  2. Где лежат настройки
  3. Видно ли Redis снаружи
  4. Как задать пароль
  5. Как не дать Redis съесть всю память
  6. Что будет с данными после перезагрузки
  7. Что значат предупреждения в журнале
  8. Как подключить Redis к приложению
  9. Когда Redis не нужен
  10. Что делать дальше
Команды проверены 14 октября 2026 годачистая Ubuntu 24.04 · Redis 7.0.15Как мы проверяем

У вас на VPS работает приложение, и вы хотите дать ему быстрый кэш, а заодно место для сессий и очередей. Для этого подходит Redis: он держит данные в оперативной памяти и отвечает быстро. Поставим его, закроем от посторонних, зададим пароль и лимит памяти, чтобы на небольшом сервере он не съел всё, что есть.

Как поставить Redis

Redis это хранилище «ключ и значение»: вы кладёте в него данные под именем и быстро забираете обратно. В репозитории Ubuntu 24.04 есть пакет redis-server (на 14 октября 2026 года Redis 7.0.15), отдельный репозиторий не нужен. Пустой Redis занимает около 13 МБ памяти.

sudo apt update
sudo apt install redis-server

Первая команда обновляет список пакетов. Вторая ставит сервер и клиент redis-cli и запускает службу. Если сервер новый, сначала сделайте первую настройку VPS на Ubuntu.

Проверьте, что служба работает:

sudo systemctl status redis-server
redis-cli ping

Первая команда показывает состояние службы, и в ответе нужна строка active (running). Вторая отправляет серверу проверочный запрос, и ответ PONG значит, что Redis слышит вас.

Где лежат настройки

Основной файл: /etc/redis/redis.conf. После правок службу перезапускают:

sudo systemctl restart redis-server

Новые настройки вступят в силу. Данные в памяти при этом не пропадут, если включено сохранение на диск (о нём ниже).

Строку supervised в файле трогать не нужно. Служба Ubuntu сама запускает Redis с ключом --supervised systemd, так он сообщает systemd о готовности.

Видно ли Redis снаружи

Нет, и так задумано. В пакете Ubuntu в файле указано bind 127.0.0.1 -::1, то есть Redis слушает только адрес самого сервера. Проверьте:

sudo ss -tlnp | grep 6379

ss -tlnp показывает слушающие TCP-порты, а grep оставляет порт 6379. Адрес 127.0.0.1:6379 значит, что снаружи Redis недоступен.

Рядом стоит protected-mode yes. Это защита на случай ошибки в настройках: если Redis без пароля вдруг слушает внешний адрес, он откажет всем, кроме localhost. Оставьте как есть.

Открытый наружу Redis без пароля регулярно находят сканеры. Через него читают и стирают данные, а иногда получают доступ к серверу. Если приложение на том же VPS, не меняйте bind и не открывайте порт 6379. Нужен внешний доступ: разрешите порт только одному IP в файрволе (sudo ufw allow from 203.0.113.5 to any port 6379 proto tcp, адрес замените на свой), задайте пароль и укажите в bind адрес сервера. О ufw читайте в статье настройка файрвола ufw.

Если приложение живёт рядом с Redis, ничего не открывайте.

Как задать пароль

Даже на localhost пароль полезен, потому что к Redis могут подключиться другие программы на сервере. Откройте файл настроек и найдите строку # requirepass foobared:

sudo nano /etc/redis/redis.conf
requirepass замените-на-длинный-пароль

Уберите # в начале и замените foobared своим паролем. requirepass задаёт общий пароль для всех клиентов. После перезапуска проверка выглядит так:

redis-cli -a 'замените-на-длинный-пароль' ping

-a передаёт пароль, а ответ PONG значит, что он принят. Redis предупредит, что пароль в командной строке небезопасен, ведь его видно в истории команд. Для проверки это допустимо.

Если приложений несколько, удобнее ACL: отдельные пользователи с ограниченными правами. В redis-cli выполните:

ACL SETUSER app on >пароль-приложения ~app:* +@all -@dangerous

Команда создаёт пользователя app. Он включён (on), пароль идёт после >, доступ у него к ключам, чьи имена начинаются на app:, и ко всем командам, кроме опасных (-@dangerous: например, FLUSHALL и CONFIG). Если пользователь полезет к чужому ключу или вызовет опасную команду, получит ошибку NOPERM.

Пользователь, созданный командой, живёт до перезапуска. Чтобы сохранить его, выполните CONFIG REWRITE, и Redis допишет пользователей в redis.conf. Но requirepass задайте до этого шага: если сделать наоборот, Redis запишет в файл пользователя default без пароля, и строка requirepass перестанет действовать.

Как не дать Redis съесть всю память

По умолчанию лимита памяти нет. Если приложение складывает в Redis всё подряд, он растёт, пока систему не остановит ядро. Поэтому задайте потолок в redis.conf:

maxmemory 256mb
maxmemory-policy allkeys-lru

maxmemory ограничивает объём данных, а maxmemory-policy решает, что делать у предела. allkeys-lru удаляет давно не использованные ключи, и это подходит, когда Redis служит кэшем. Если в нём лежат данные, которые нельзя потерять (очередь, сессии), берите noeviction: тогда при заполнении Redis вернёт ошибку записи, а не удалит ключи.

На сервере с 1-2 ГБ разумный лимит 128-512 МБ, но точное число зависит от соседей: базы, сайта, приложения. Запас памяти нужен и системе. Если её не хватает, добавьте файл подкачки.

Что будет с данными после перезагрузки

Redis умеет сохранять данные двумя способами:

  • RDB: периодический снимок всех данных в файл dump.rdb. Включён по умолчанию: снимок раз в час, если изменился хотя бы 1 ключ, раз в 5 минут при 100 изменениях и раз в минуту при 10 000. При обычном перезапуске Redis тоже сохраняет снимок. При аварии теряются данные с последнего снимка.
  • AOF: журнал каждой записи. Включается строкой appendonly yes. Теряется меньше, но файл больше и запись чуть медленнее.

Если Redis работает только кэшем, сохранение можно выключить: save "" и appendonly no. Данные лежат в /var/lib/redis/. Копию снимка сделайте так, как описано в статье резервные копии VPS.

Что значат предупреждения в журнале

Redis в Ubuntu пишет свой журнал в файл, а не в журнал systemd. Последние 50 строк:

sudo tail -n 50 /var/log/redis/redis-server.log

tail -n 50 выводит конец файла. Журнал systemd (sudo journalctl -u redis-server) покажет только запуск и остановку службы, подробнее в статье журналы и службы systemd.

Чаще всего встречается предупреждение WARNING Memory overcommit must be enabled!. Оно значит, что при сохранении снимка Redis копирует процесс, и ядро может отказать в памяти. Исправление:

echo 'vm.overcommit_memory = 1' | sudo tee /etc/sysctl.d/99-redis.conf
sudo sysctl --system

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

Как подключить Redis к приложению

Адрес для библиотек выглядит одинаково:

redis://:пароль@127.0.0.1:6379/0

Сначала схема redis://, затем пароль после двоеточия, адрес, порт и номер базы (от 0 до 15). Эту строку подставляют в клиент: redis.from_url() из пакета redis в Python, createClient({ url }) из пакета redis в Node.js, расширение phpredis или библиотеку predis в PHP. Для Node.js см. также Node.js на VPS с pm2. Спецсимволы в пароле (например @ или /) нужно закодировать в процентах, но проще сразу взять пароль из букв и цифр.

Когда Redis не нужен

Он не нужен, если сайт небольшой и тормозит не из-за обращений к базе. Для одного WordPress на 1 ГБ памяти кэш объектов часто даёт мало, а память занимает. Не нужен он и там, где достаточно файлового кэша или таблицы в базе. Если нужен сервер баз данных, посмотрите установку MySQL.

Что делать дальше

Redis стоит на localhost, под паролем и с потолком памяти, так что приложение может класть в него кэш и сессии, не боясь за остальной сервер. Хорошо он живёт на сервере с 2 ГБ памяти и больше. Сравнить тарифы можно в подборе VPS: конфигурации «2 ядра 4 ГБ» сейчас стоят от 439 ₽ до 6 400 ₽ в месяц, цены сверены 22 октября 2026 года.