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-1 | 2 ГБ | 256 МБ |
| VDS-2 | 4 ГБ | 512 МБ |
| VDS-3 | 8 ГБ | 1–2 ГБ |
| VDS-5 | 24 ГБ | 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.