До основного вмісту

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 проти 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, не зачіпаючи чергу завдань в іншій базі того самого інстансу.

Чи була стаття корисною?
← Назад до бази знань Поставити питання підтримці