К основному содержимому

Redis на VPS: установка и настройка кэширования

VDS / VPS · 01.11.2025 · 4 мин чтения
Иллюстрация к статье «Redis на VPS: установка и настройка кэширования»

Redis — in-memory хранилище данных. Вместо запроса к базе данных при каждом посещении страницы — данные берутся из молниеносно быстрой оперативной памяти.

Установка Redis

sudo apt update
sudo apt install -y redis-server

sudo systemctl enable redis
sudo systemctl start redis

# Проверить работу
redis-cli ping
# Ответ: PONG

Настройка Redis

sudo nano /etc/redis/redis.conf
# Ограничить память (например, 256 MB):
maxmemory 256mb
maxmemory-policy allkeys-lru

# Установить пароль:
requirepass ВашНадёжныйПароль

# Слушать только localhost (безопасно):
bind 127.0.0.1 ::1
sudo systemctl restart redis

Redis + WordPress

Установите плагин Redis Object Cache:

  1. Плагины → Добавить → «Redis Object Cache»
  2. Добавьте в wp-config.php: define('WP_REDIS_HOST', '127.0.0.1'); define('WP_REDIS_PASSWORD', 'ВашПароль');
  3. Активируйте в настройках плагина

Redis + Laravel

# .env:
CACHE_DRIVER=redis
SESSION_DRIVER=redis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=ВашПароль
REDIS_PORT=6379

Мониторинг Redis

redis-cli -a ВашПароль info memory
redis-cli -a ВашПароль monitor   # Все команды в реальном времени
redis-cli -a ВашПароль info stats
💡 Для WordPress с Redis Object Cache TTFB снижается с 300–500ms до 50–80ms. Разница ощутима на высоконагруженных сайтах.

Основные настройки redis.conf

# /etc/redis/redis.conf

# Привязка только к localhost (безопасность!)
bind 127.0.0.1

# Пароль
requirepass YourStrongPassword123

# Максимальная память
maxmemory 256mb
maxmemory-policy allkeys-lru

# Persistent storage (RDB — периодический снимок)
save 900 1
save 300 10

# AOF (каждую секунду — баланс надёжности и скорости)
appendonly yes
appendfsync everysec

Политики вытеснения памяти

ПолитикаПоведениеПрименение
allkeys-lruУдалять давно не используемыеКэш
volatile-lruУдалять только с TTLСессии + кэш
noevictionОшибка при переполненииОчереди
⚠️ Никогда не открывайте Redis на публичный интерфейс без VPN или firewall. Redis не имеет шифрования TLS по умолчанию.

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

СообщениеЧто означает
NOAUTH Authentication requiredВ redis.conf задан requirepass, но клиент подключается без пароля или AUTH-команды
MISCONF Redis is configured to save RDB snapshotsДиск переполнен или нет прав на запись RDB-файла — Redis блокирует запись, пока проблема не решена
OOM command not allowed when used memory > maxmemoryДостигнут лимит maxmemory, а политика noeviction не позволяет освобождать место автоматически
Could not connect to Redis: Connection refusedСлужба не запущена, либо bind ограничен другим адресом, отличным от того, куда стучится клиент

Redis vs Memcached: когда что выбирать

КритерийRedisMemcached
Структуры данныхСтроки, списки, хэши, множестваТолько строки
Персистентность на дискЕсть (RDB/AOF)Нет, только память
МногопоточностьВ основном однопоточныйМногопоточный из коробки
Типичное применениеКэш, очереди, сессииПростой кэш объектов

Когда Redis не подходит

  • Датасет заведомо больше доступной оперативной памяти сервера, а бюджет на апгрейд отсутствует
  • Нужен только примитивный key-value кэш без persistence — Memcached проще в этом случае и требует меньше памяти на служебные структуры
  • Приложению нужна полноценная реляционная модель с транзакциями и join — это задача для PostgreSQL или MySQL, а не Redis
  • Команда не готова сопровождать ещё один сервис и мониторить его память отдельно от основного приложения

Проверка результата

# Сколько ключей уже в базе
redis-cli -a ВашПароль dbsize

# Текущий лимит памяти
redis-cli -a ВашПароль config get maxmemory

# Реально занятая память
redis-cli -a ВашПароль info memory | grep used_memory_human

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

Оценка нужного объёма памяти

Прежде чем выставлять maxmemory, полезно понимать порядок цифр для своего проекта. Один сеанс WordPress с Redis Object Cache обычно занимает от нескольких килобайт до пары сотен килобайт в зависимости от числа запросов и плагинов. Для сайта с умеренной посещаемостью 128–256 МБ памяти под Redis чаще всего достаточно; интернет-магазины с большим каталогом и активным кэшем сессий могут упереться в гигабайт и выше — это стоит проверять командой info memory, а не подбирать наугад.

Redis как хранилище очередей: отдельная база или отдельный инстанс

Если Redis уже используется под кэш сайта, а приложению также нужна очередь задач (например, для Laravel Queue), не стоит смешивать их в одной логической базе Redis без разделения. Проще всего использовать разные номера баз данных (SELECT 0–15 по умолчанию) для кэша и очередей — это не полная изоляция ресурсов, но позволяет очищать кэш командой FLUSHDB, не затрагивая очередь заданий в другой базе того же инстанса.

Статья помогла?
← Назад в базу знаний Задать вопрос поддержке