VDS · Базы данных

Redis: кэш и очереди

Установка Redis на VDS, пароль и привязка к локальному адресу, лимит памяти и политика вытеснения, разница между кэшем и очередью.

Обновлено 23 августа 2026 г.

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

Установка

apt update && apt install -y redis-server        # Debian, Ubuntu
dnf install -y redis                             # AlmaLinux, CentOS Stream
systemctl enable --now redis-server
redis-cli ping

Ответ PONG означает, что сервер работает.

Обязательная настройка

Файл /etc/redis/redis.conf:

bind 127.0.0.1
protected-mode yes
requirepass длинный-случайный-пароль
maxmemory 512mb
maxmemory-policy allkeys-lru
appendonly no
systemctl restart redis-server
redis-cli -a 'пароль' ping

Redis без пароля, открытый в интернет, находят сканеры за минуты и используют для майнинга. Если приложение на той же машине — оставьте bind 127.0.0.1 и не открывайте порт 6379 наружу. Нужен доступ снаружи — только через SSH-туннель или VPN.

Память и вытеснение

maxmemory задавайте явно: без него Redis растёт, пока система не начнёт убивать процессы. Разумно отдать ему четверть памяти ступени.

СтупеньПамять машиныmaxmemory
VDS-12 ГБ256 МБ
VDS-24 ГБ512 МБ
VDS-38 ГБ1–2 ГБ
VDS-524 ГБ4–6 ГБ

Политика зависит от роли:

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

Смешивать кэш и очередь в одной базе не стоит именно из-за этого противоречия. Разведите их по разным номерам баз (SELECT 1) или по двум экземплярам.

Сохранение на диск

По умолчанию Redis периодически сбрасывает снимок в dump.rdb. Для чистого кэша это лишняя запись на диск — отключите save. Для очередей включите appendonly yes: так после перезагрузки машины задачи не пропадут.

Помните, что запись на диск ограничена ступенью: 60 МБ/с на ядро, не ниже 60 и не выше 400 МБ/с.

Наблюдение

redis-cli -a 'пароль' info memory
redis-cli -a 'пароль' info stats
redis-cli -a 'пароль' --stat
redis-cli -a 'пароль' slowlog get 10

Ключевой показатель — evicted_keys: постоянный рост означает, что памяти мало и кэш не успевает приносить пользу.

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

СимптомПричина
NOAUTH Authentication requiredПриложению не передан пароль
OOM command not allowedДостигнут maxmemory при политике noeviction
DENIED Redis is running in protected modeОбращение снаружи при bind 127.0.0.1 — так и задумано
Данные пропали после перезагрузкиНе включено сохранение
Машина ушла в свопСумма maxmemory и остальных служб больше памяти ступени

Не используйте KEYS * на рабочем сервере: команда блокирует Redis на время обхода всех ключей. Для перебора есть SCAN.