Как установить Redis на Ubuntu 24

Установить Redis на Ubuntu можно из репозитория самой Ubuntu (в 24.04 это Redis 7.0, в 22.04 — 6.0) или взять свежий выпуск из официального репозитория Redis. Redis доверяет любому клиенту, который до него добрался, поэтому открытым в интернет его оставлять нельзя. Ниже — как его запускает systemd, как добавить пароль или пользователя ACL и как пустить второй сервер, ничего не выставляя наружу.

Как установить Redis на Ubuntu через apt

Пакет redis-server ставит сервер и redis-cli и сразу запускает службу.

sudo apt update sudo apt install -y redis-server redis-server --version redis-cli ping

Если сервер работает, на ping он ответит PONG. Настройки лежат в /etc/redis/redis.conf, данные — в /var/lib/redis/, журнал — в /var/log/redis/redis-server.log.

Как проверить, что Redis запускает systemd

В старых инструкциях советуют поменять в redis.conf строку supervised no на supervised systemd. С пакетом Ubuntu это не нужно: его служба уже запускает Redis с --supervised systemd --daemonize no, и эти параметры сильнее файла. Убедиться можно так:

systemctl status redis-server --no-pager systemctl cat redis-server

В состоянии будет Active: active (running), а в описании службы — строка ExecStart=/usr/bin/redis-server /etc/redis/redis.conf --supervised systemd --daemonize no. Служба включена, так что Redis поднимется и после перезагрузки. Правки в redis.conf применяются командой:

sudo systemctl restart redis-server

Как задать пароль: requirepass или пользователь ACL

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

openssl rand -hex 32

Найдите в файле настроек закомментированную строку # requirepass foobared и впишите на её место свой пароль:

/etc/redis/redis.conf
requirepass choose-a-long-random-password
sudo systemctl restart redis-server redis-cli --askpass ping

redis-cli спросит пароль и ответит PONG. Без пароля команды вернут NOAUTH Authentication required. Начиная с Redis 6 можно ещё завести каждому приложению своего пользователя со своими правами (ACL). Эта строка в том же файле создаёт пользователя app, которому доступны все ключи, но не опасные команды вроде FLUSHALL или CONFIG:

/etc/redis/redis.conf
user app on >choose-another-long-password ~* &* +@all -@dangerous

После перезапуска войдите под этим пользователем:

redis-cli --user app --askpass

Приложение тогда подключается с именем пользователя и паролем.

Как осторожно пустить другой сервер

Redis из Ubuntu слушает только 127.0.0.1 и ::1. Это правильно, когда приложение работает на том же сервере. Если на другом, соедините их частной сетью, но не через открытый интернет: трафик Redis, включая пароль, не шифруется. Частный адрес этого сервера покажет команда:

ip -4 addr

Допишите этот адрес в строку bind:

/etc/redis/redis.conf
bind 127.0.0.1 -::1 10.0.0.5

Сначала задайте пароль, как выше, потом перезапустите Redis и откройте порт 6379 только для сервера приложения. Вместо 10.0.0.6 подставьте его адрес.

sudo systemctl restart redis-server sudo ufw allow from 10.0.0.6 to any port 6379 proto tcp

Строку protected-mode yes не трогайте. Правило UFW защищает, только пока UFW включён, так что проверьте его командой: sudo ufw status Прежде чем включать UFW по SSH, разрешите SSH командой: sudo ufw allow OpenSSH

Как поставить свежий Redis с packages.redis.io

Ubuntu держит одну версию Redis, пока жив выпуск системы. У проекта Redis есть свой репозиторий apt с актуальными выпусками. Команды ниже — с его страницы установки: они добавляют ключ подписи и репозиторий, а затем ставят Redis оттуда.

sudo apt-get install lsb-release curl gpg curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg sudo chmod 644 /usr/share/keyrings/redis-archive-keyring.gpg echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list sudo apt-get update sudo apt-get install redis

Служба называется так же, redis-server, и запускается сама. Если нет — выполните:

sudo systemctl enable redis-server sudo systemctl start redis-server

Проверьте версию и какой файл настроек читает служба:

redis-server --version systemctl cat redis-server

Если ставить поверх Redis из Ubuntu, apt спросит, оставить ли ваш /etc/redis/redis.conf. Если оставить, новая служба падает с Failed with result 'protocol': её unit больше не передаёт --supervised systemd. Пропишите в файле эти две строки и перезапустите Redis:

/etc/redis/redis.conf
daemonize no supervised systemd
sudo systemctl restart redis-server

Если Redis не запускается или не отвечает

  • Could not connect to Redis at 127.0.0.1:6379: Connection refused — сервер не запущен. Обычно это опечатка в redis.conf. Причину покажет журнал службы: sudo journalctl -u redis-server -n 50 Её видно и в журнале Redis: sudo tail -n 50 /var/log/redis/redis-server.log
  • NOAUTH Authentication required. — задан пароль. Сначала отправьте AUTH с паролем или подключайтесь командой: redis-cli --askpass
  • WRONGPASS invalid username-password pair or user is disabled. — неверный пароль или у пользователя ACL нет on.
  • DENIED Redis is running in protected mode — клиент с другой машины добрался до Redis без пароля. Задайте пароль и адрес в bind, как выше, а защищённый режим не выключайте.
  • WARNING Memory overcommit must be enabled! в журнале — фоновое сохранение может сорваться, когда память на исходе. Документация Redis советует дописать vm.overcommit_memory = 1 в /etc/sysctl.conf и применить сразу командой: sudo sysctl vm.overcommit_memory=1

Если вы работаете и на Mac

MacWashing, раздел «Сборка мусора»: найдены мусор Xcode, пользовательский кэш, установщики и журналы, к очистке 22,83 ГБ

Сборка мусора в MacWashing находит кэш всех знакомых ей программ, в том числе спрятанный внутри их данных, а ещё журналы, мусор Xcode и остатки удалённых программ. Она показывает, сколько места занимает каждая находка, и очищает всё за один раз. Всё спорное остаётся без галочки, пока вы не решите.

Бесплатная пробная версия · macOS 14 и новее

Вопросы и ответы

Как установить Redis на Ubuntu?

Поставьте пакет redis-server через apt и проверьте, что сервер отвечает PONG, как в первом разделе. На Ubuntu 24.04 встанет Redis 7.0, на 22.04 — 6.0.

Можно ли открыть Redis в интернет?

Нет. В документации Redis сказано, что он рассчитан на доверенных клиентов в доверенной сети. Держите его на 127.0.0.1 или в частной сети, с паролем и правилом брандмауэра для каждого сервера приложения.

Где Redis хранит данные?

В /var/lib/redis/, по умолчанию в снимке dump.rdb. Всё лежит в памяти, а снимок Redis сохраняет время от времени — как задано строками save в redis.conf.