bolt Valebyte VPS від $4/міс — NVMe, запуск за 60 секунд.

Отримати VPS arrow_forward
eco Початковий Туторіал

Встановлення та налаштування Redis

calendar_month Sep 01, 2026 schedule 23 хв. читання visibility 32 переглядів
Установка и настройка Redis на VPS: Безопасность и высокая производительность
info

Потрібен сервер для цього гайду? Ми пропонуємо виділені сервери та VPS у 50+ країнах з миттєвим налаштуванням.

Потрібен сервер для цього гайду?

Розгорніть VPS або виділений сервер за хвилини.

Встановлення та налаштування Redis на VPS: Безпека та висока продуктивність

TL;DR

У цьому детальному технічному посібнику ми крок за кроком налаштуємо високопродуктивний та безпечний сервер Redis на вашому VPS. Ви дізнаєтеся, як підготувати сервер, встановити актуальну версію Redis, правильно сконфігурувати його для оптимальної продуктивності та безпеки, а також налаштувати резервне копіювання та моніторинг. Усі команди та конфігураційні файли надані у готовому для копіювання та використання вигляді.

  • Підготовка VPS з актуальною ОС Ubuntu 24.04 LTS, налаштування безпеки SSH та фаєрволу.
  • Встановлення Redis версії 7.x з офіційних репозиторіїв або з компіляцією з вихідних кодів для максимальної актуальності.
  • Детальна конфігурація redis.conf з акцентом на безпеку (пароль, прив'язка до IP) та продуктивність (керування пам'яттю, персистентність).
  • Налаштування автоматичного резервного копіювання даних Redis та конфігурації.
  • Ефективне усунення поширених проблем та відповіді на часті запитання.

Що ми налаштовуємо і навіщо

Схема: Що ми налаштовуємо і навіщо
Схема: Що ми налаштовуємо і навіщо

Redis (Remote Dictionary Server) — це потужне, відкрите сховище даних в оперативній пам'яті, що використовується як база даних, кеш та брокер повідомлень. Він підтримує різні структури даних, такі як рядки, хеші, списки, набори, відсортовані набори із запитами діапазону, бітові карти, HyperLogLogs, геопросторові індекси та потоки. Завдяки зберіганню даних у RAM, Redis забезпечує неймовірно високу швидкість читання та запису, що робить його незамінним інструментом для сучасних високонавантажених застосунків.

У рамках цього посібника ми встановимо та налаштуємо Redis на вашому Virtual Private Server (VPS) або виділеному сервері. Кінцева мета — отримати стабільний, безпечний та продуктивний екземпляр Redis, який зможе ефективно обслуговувати ваші застосунки, будь то веб-застосунок, мікросервіс, ігрова платформа або система обробки даних. Ви навчитеся не тільки базовому встановленню, а й тонкому налаштуванню параметрів безпеки, керуванню пам'яттю та персистентності даних, що є критично важливим для продакшн-середовища.

Що отримає читач у підсумку:

  • Робочий сервер Redis, готовий до інтеграції з вашими застосунками.
  • Розуміння ключових параметрів конфігурації Redis, що впливають на безпеку та продуктивність.
  • Навички базового адміністрування Redis, включаючи запуск, зупинку, моніторинг та резервне копіювання.
  • Готовий набір команд та скриптів для швидкого розгортання та обслуговування.

Які альтернативи існують і чому self-hosted на VPS:

Існує кілька підходів до використання Redis:

  • Хмарні керовані сервіси (Cloud-managed Redis): Такі провайдери, як Amazon ElastiCache, Google Cloud Memorystore або Azure Cache for Redis, пропонують повністю керовані екземпляри Redis. Вони забезпечують високу доступність, автоматичне масштабування, резервне копіювання та патчінг без необхідності ручного втручання.
    Плюси: Простота використання, мінімум адміністрування, вбудована відмовостійкість.
    Мінуси: Висока вартість, менший контроль над конфігурацією, прив'язка до конкретного хмарного провайдера (vendor lock-in).
  • Self-hosted Redis на VPS/Dedicated сервері: Ви встановлюєте та керуєте Redis самостійно на своєму віртуальному або виділеному сервері.
    Плюси: Повний контроль над конфігурацією, оптимізація під ваші потреби, значно нижча вартість порівняно з керованими сервісами, відсутність vendor lock-in, можливість використання специфічних версій або модулів Redis.
    Мінуси: Вимагає технічних знань для встановлення, налаштування, моніторингу та обслуговування, відповідальність за безпеку та відмовостійкість лежить на вас.

Вибір self-hosted Redis на VPS ідеальний для тих, хто цінує повний контроль, хоче оптимізувати витрати та володіє достатніми технічними навичками для самостійного адміністрування. Це чудовий варіант для розробників, стартапів, криптоентузіастів та всіх, хто хоче максимально ефективно використовувати свої серверні ресурси.

Який VPS-конфіг потрібен для цього завдання

Схема: Який VPS-конфіг потрібен для цього завдання
Схема: Який VPS-конфіг потрібен для цього завдання

Вимоги до VPS для Redis сильно залежать від обсягу даних, які ви плануєте зберігати в пам'яті, інтенсивності операцій читання/запису та кількості одночасно підключених клієнтів. Redis зберігає всі дані в оперативній пам'яті, тому RAM є найкритичнішим ресурсом.

Мінімальні вимоги для невеликих проєктів (кеш для веб-сайту з низьким трафіком, невелика черга завдань):

  • CPU: 1-2 vCPU (сучасний процесор, наприклад, Intel Xeon E3/E5 або AMD EPYC). Redis однопотоковий для більшості операцій, але фонові завдання (persistence, AOF rewrite) можуть використовувати інші ядра.
  • RAM: 1-2 GB. Цього вистачить для зберігання кількох сотень мегабайт даних Redis плюс операційна система та інші базові служби.
  • Диск: 20-40 GB SSD. SSD критичний для швидкого запису персистентних даних (RDB-знімки, AOF-журнал) та для швидкого завантаження даних при перезапуску.
  • Мережа: 100 Mbps - 1 Gbps. Для більшості випадків 100 Mbps достатньо, але для високонавантажених застосунків з великою кількістю запитів або передачею великих об'єктів даних знадобиться 1 Gbps.

Рекомендований VPS-план для більшості завдань (середній трафік, кілька гігабайт даних, черги, pub/sub):

  • CPU: 2-4 vCPU. Забезпечить достатню продуктивність для обробки запитів та фонових операцій.
  • RAM: 4-8 GB. Дозволить зберігати кілька гігабайт даних Redis, залишаючи запас для ОС та пікових навантажень.
  • Диск: 80-160 GB SSD. Для більших обсягів даних та кращої продуктивності персистентності.
  • Мережа: 1 Gbps. Для забезпечення високої пропускної здатності.

Для таких характеристик можна взяти VPS із зазначеними характеристиками, який дозволить ефективно використовувати Redis як кеш, брокер повідомлень або основну базу даних для багатьох застосунків.

Коли потрібен dedicated, а не VPS:

Виділений сервер стає необхідним, коли:

  • Обсяг даних перевищує доступну RAM: Якщо ви плануєте зберігати десятки або сотні гігабайт даних у Redis.
  • Потрібна максимальна продуктивність: Для дуже високонавантажених систем, де важлива кожна мілісекунда затримки, а також повна відсутність "сусідського шуму" (noisy neighbor effect), притаманного віртуалізації.
  • Високі вимоги до безпеки та ізоляції: Dedicated сервер надає повну фізичну ізоляцію.
  • Специфічні апаратні вимоги: Наприклад, особливі типи дисків (NVMe), велика кількість ядер CPU або дуже великі обсяги RAM.

Локація: на що впливає

Вибір географічної локації VPS має прямий вплив на затримку (latency) між вашим застосунком та сервером Redis. Чим ближче сервер Redis до ваших користувачів або до сервера вашого застосунку, тим нижчою буде затримка. Для веб-застосунків це означає швидшу відповідь сторінок, для ігрових серверів — більш плавний геймплей, для систем обробки даних — швидше виконання завдань.

Якщо ваш застосунок і Redis знаходяться в одному дата-центрі або хоча б в одній країні, затримка буде мінімальною (одиниці мілісекунд). Якщо вони розташовані на різних континентах, затримка може досягати сотень мілісекунд, що є неприйнятним для багатьох сценаріїв використання Redis.

Підготовка сервера

Схема: Підготовка сервера
Схема: Підготовка сервера

Перш ніж встановлювати Redis, необхідно провести базове налаштування безпеки та оновити операційну систему. Ми будемо використовувати Ubuntu 24.04 LTS (Noble Numbat), яка буде актуальною у 2026 році та є чудовим вибором для стабільних продакшн-серверів.

1. Підключення до сервера

Підключіться до вашого VPS за допомогою SSH, використовуючи облікові дані, надані провайдером. Зазвичай це користувач root та пароль, або SSH-ключ.


ssh root@ВАШ_IP_АДРЕС

2. Оновлення системи

Важливо оновити всі пакети до останніх версій, щоб забезпечити безпеку та стабільність системи.


sudo apt update && sudo apt upgrade -y

Ця команда спочатку оновлює список доступних пакетів (apt update), а потім встановлює всі доступні оновлення (apt upgrade -y, де -y автоматично підтверджує всі запити).

3. Створення нового користувача з правами sudo

Робота під користувачем root небезпечна. Створимо нового користувача та надамо йому права sudo.


sudo adduser redisadmin

Дотримуйтесь інструкцій, щоб встановити пароль та заповнити інформацію про користувача (можна залишити порожнім). Потім додайте нового користувача до групи sudo:


sudo usermod -aG sudo redisadmin

Тепер ви можете переключитися на нового користувача та продовжити роботу:


su - redisadmin

Або відкрити нове SSH-з'єднання під цим користувачем.

4. Налаштування SSH-ключів (рекомендується)

Використання SSH-ключів замість паролів значно підвищує безпеку. Якщо ви ще не використовуєте їх, згенеруйте пару ключів на локальній машині та скопіюйте публічний ключ на сервер.

На вашій локальній машині:


ssh-keygen -t rsa -b 4096
ssh-copy-id redisadmin@ВАШ_IP_АДРЕС

Після успішного копіювання ключа, вимкніть автентифікацію за паролем у файлі /etc/ssh/sshd_config на сервері. Відкрийте файл для редагування:


sudo nano /etc/ssh/sshd_config

Знайдіть рядки та змініть/додайте їх:


# Вимкнути вхід для root
PermitRootLogin no

# Вимкнути автентифікацію за паролем
PasswordAuthentication no

# Увімкнути автентифікацію за ключем
PubkeyAuthentication yes

Збережіть зміни (Ctrl+O, Enter) та вийдіть (Ctrl+X). Потім перезапустіть службу SSH:


sudo systemctl restart sshd

ВАЖЛИВО: Перед вимкненням автентифікації за паролем переконайтеся, що ви можете увійти за допомогою SSH-ключа, відкривши нове з'єднання в іншому терміналі. Якщо вхід за ключем не працює, ви ризикуєте втратити доступ до сервера.

5. Налаштування фаєрволу (UFW)

Uncomplicated Firewall (UFW) — це простий у використанні інтерфейс для iptables. Він дозволяє обмежити доступ до портів на вашому сервері.

Дозвольте SSH-з'єднання (зазвичай порт 22):


sudo ufw allow OpenSSH

Якщо Redis буде доступний лише локально (рекомендується), вам не потрібно відкривати його порт. Якщо ж ви плануєте доступ з інших серверів у вашій мережі (наприклад, у рамках приватної мережі VPS-провайдера), відкрийте порт Redis (за замовчуванням 6379) для конкретної IP-адреси або підмережі:


# Дозволити доступ до Redis з конкретної IP
sudo ufw allow from 192.168.1.100 to any port 6379

# Або для всієї приватної підмережі
sudo ufw allow from 10.0.0.0/8 to any port 6379

Активуйте фаєрвол:


sudo ufw enable

Підтвердіть дію, ввівши y. Перевірте статус фаєрволу:


sudo ufw status

6. Встановлення Fail2ban

Fail2ban сканує логи та блокує IP-адреси, що показують ознаки шкідливих атак (наприклад, численні невдалі спроби входу по SSH). Це додатковий рівень безпеки.


sudo apt install fail2ban -y
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

Створіть копію файлу конфігурації за замовчуванням для налаштування:


sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Відредагуйте jail.local, щоб налаштувати параметри бану, якщо це необхідно. Наприклад, можна збільшити bantime (час бану) або зменшити maxretry (кількість спроб).


sudo nano /etc/fail2ban/jail.local

Знайдіть секцію [DEFAULT] та налаштуйте:


[DEFAULT]
bantime = 1h
findtime = 10m
maxretry = 5

Перезапустіть Fail2ban, щоб застосувати зміни:


sudo systemctl restart fail2ban

Ваш сервер тепер базово захищений і готовий до встановлення Redis.

Встановлення ПЗ — покроково

Схема: Встановлення ПЗ — покроково
Схема: Встановлення ПЗ — покроково

Ми встановимо Redis версії 7.x, яка буде актуальною та стабільною у 2026 році. Існує два основні способи встановлення: з офіційних репозиторіїв Ubuntu або компіляція з вихідних кодів. Для більшості користувачів встановлення з репозиторіїв простіше та надійніше, забезпечуючи автоматичні оновлення безпеки. Однак, якщо вам потрібна найсвіжіша версія або специфічні опції компіляції, збірка з вихідних кодів може бути кращою. Ми розглянемо обидва варіанти, починаючи з рекомендованого.

Варіант 1: Встановлення Redis з репозиторіїв Ubuntu (Рекомендується)

Цей метод простий і забезпечує стабільну, протестовану версію Redis. Ubuntu 24.04 LTS, швидше за все, буде постачатися з Redis 7.x або новішою.

Крок 1: Оновлення списку пакетів

Переконайтеся, що список пакетів оновлено, щоб отримати найсвіжішу інформацію про доступні версії Redis.


sudo apt update
# Оновлює індекс пакетів з репозиторіїв

Крок 2: Встановлення Redis-сервера

Встановіть пакет redis-server. Ця команда встановить Redis та всі необхідні залежності, а також налаштує його як системну службу.


sudo apt install redis-server -y
# Встановлює Redis Server та автоматично запускає його

Крок 3: Перевірка статусу служби Redis

Після встановлення Redis повинен автоматично запуститися. Перевіримо його статус:


sudo systemctl status redis-server
# Перевіряє, чи запущена служба Redis

Вивід повинен показати "active (running)". Якщо ні, спробуйте запустити його вручну:


sudo systemctl start redis-server
# Запускає службу Redis

Крок 4: Перевірка версії Redis

Переконайтеся, що встановлена очікувана версія Redis (імовірно 7.x).


redis-server --version
# Виводить версію встановленого Redis

Ви побачите щось на зразок Redis server v=7.x.y sha=...

Крок 5: Перевірка підключення до Redis

Використовуйте клієнт redis-cli для перевірки підключення до Redis-сервера.


redis-cli ping
# Відправляє команду PING серверу Redis

У відповідь ви повинні отримати PONG, що означає успішне підключення.

Варіант 2: Компіляція Redis з вихідних кодів (Для досвідчених користувачів)

Цей метод дозволяє встановити найновішу версію Redis (наприклад, Redis 8.x, якщо вона буде доступна до 2026 року) або використовувати специфічні опції компіляції. Він вимагає встановлення інструментів для збірки.

Крок 1: Встановлення необхідних інструментів для збірки

Встановіть пакети, необхідні для компіляції програмного забезпечення з вихідних кодів.


sudo apt install build-essential tcl -y
# Встановлює компілятори (gcc, make) та tcl для тестів

Крок 2: Завантаження вихідних кодів Redis

Перейдіть до тимчасової директорії та завантажте останню стабільну версію Redis з офіційного сайту. Для прикладу, використовуємо версію 7.2.4, але ви можете замінити на найактуальнішу на 2026 рік.


cd /tmp
wget https://download.redis.io/releases/redis-7.2.4.tar.gz
# Завантажує архів з вихідними кодами Redis
tar xzf redis-7.2.4.tar.gz
# Розпаковує архів
cd redis-7.2.4
# Переходить до директорії з вихідними кодами

Крок 3: Компіляція та встановлення Redis

Скомпілюйте Redis. Використовуйте make, а потім make install, щоб встановити виконувані файли в системні директорії.


make
# Компілює Redis
sudo make install
# Встановлює Redis у /usr/local/bin

Крок 4: Налаштування Redis як служби systemd

Щоб Redis запускався як системна служба та керувався через systemctl, необхідно створити конфігураційні файли. Запустіть спеціальний скрипт, який допоможе з цим.


sudo ./utils/install_server.sh
# Запускає інтерактивний скрипт для налаштування systemd та файлів конфігурації

Дотримуйтесь інструкцій скрипта. Для більшості питань можна натискати Enter, приймаючи значення за замовчуванням (наприклад, порт 6379, файл конфігурації /etc/redis/6379.conf, лог-файл /var/log/redis_6379.log, директорія даних /var/lib/redis/6379). Після завершення скрипт запустить Redis та налаштує його автозапуск.

Крок 5: Перевірка статусу служби Redis

Перевірте, що Redis запущений і працює:


sudo systemctl status redis_6379
# Перевіряє статус служби Redis, створеної скриптом (може бути redis-server або redis_6379)

Або, якщо скрипт створив службу з іменем redis-server:


sudo systemctl status redis-server

Крок 6: Перевірка версії та підключення


redis-cli ping
# Перевіряє підключення до Redis
redis-cli info server | grep redis_version
# Виводить версію Redis

Тепер Redis встановлено. Перейдемо до його детальної конфігурації для забезпечення безпеки та оптимальної продуктивності.

Конфігурація

Схема: Конфігурація
Схема: Конфігурація

Файл конфігурації Redis, як правило, знаходиться за адресою /etc/redis/redis.conf (для встановлення з репозиторіїв) або /etc/redis/6379.conf (якщо ви використовували скрипт install_server.sh). Ми будемо використовувати redis.conf для всіх прикладів.

Відкрийте файл конфігурації для редагування:


sudo nano /etc/redis/redis.conf

1. Безпека

1.1. Прив'язка до IP-адреси (bind)

За замовчуванням Redis може слухати всі доступні мережеві інтерфейси. Це небезпечно. Обмежте його прослуховуванням лише локального інтерфейсу (127.0.0.1), якщо ваш застосунок працює на тому ж сервері, або конкретної приватної IP-адреси, якщо Redis доступний з локальної мережі.

Знайдіть рядок bind 127.0.0.1 -::1 і переконайтеся, що він розкоментований. Якщо вам потрібен доступ з інших серверів у приватній мережі, вкажіть їхні IP-адреси або приватний IP вашого Redis-сервера.


# За замовчуванням слухати тільки localhost
bind 127.0.0.1 -::1

# Якщо потрібно слухати приватний IP, наприклад, 10.0.0.5
# bind 10.0.0.5

# Якщо потрібно слухати кілька IP
# bind 127.0.0.1 10.0.0.5

# Закоментуйте цей рядок, якщо хочете, щоб Redis слухав усі інтерфейси (КРАЙНЄ НЕ РЕКОМЕНДУЄТЬСЯ БЕЗ НАЛАШТУВАННЯ ФАЄРВОЛА)
# bind 0.0.0.0

Для більшості випадків, коли застосунок і Redis знаходяться на одному VPS, bind 127.0.0.1 -::1 є найбезпечнішим варіантом.

1.2. Встановлення пароля (requirepass)

Redis не має автентифікації за замовчуванням. Встановлення пароля є критично важливим заходом безпеки.

Знайдіть рядок, що починається з # requirepass foobared. Розкоментуйте його та замініть foobared на надійний, складний пароль. Генеруйте паролі довжиною не менше 32 символів.


requirepass ВАШ_СКЛАДНИЙ_ПАРОЛЬ_ДЛЯ_REDIS

Важливо: Ніколи не використовуйте прості паролі. Записуйте пароль у безпечному місці або використовуйте менеджер паролів.

1.3. Перейменування або вимкнення небезпечних команд (rename-command)

Деякі команди Redis (наприклад, FLUSHALL, FLUSHDB, KEYS, CONFIG) можуть бути небезпечними при неправильному використанні. Ви можете перейменувати їх або повністю вимкнути.


# Вимкнути команду (зробити її недоступною)
rename-command FLUSHALL ""
rename-command FLUSHDB ""

# Перейменувати команду (зробити її доступною під іншим ім'ям)
rename-command CONFIG CONFIG_HIDDEN

Якщо ви вимикаєте команду, переконайтеся, що ваші застосунки не залежать від неї, або що вони використовують її безпечні аналоги.

2. Продуктивність та керування пам'яттю

2.1. Максимальний обсяг пам'яті (maxmemory)

Redis зберігає дані в RAM. Встановіть ліміт пам'яті, щоб запобігти вичерпанню всієї доступної RAM та краху сервера. Рекомендується виділити 50-70% від загальної доступної RAM на вашому VPS для Redis, щоб залишити місце для ОС та інших процесів.

Наприклад, якщо у вас 4GB RAM, ви можете виділити 2.5GB для Redis.


maxmemory 2.5gb
2.2. Політика витіснення (maxmemory-policy)

Коли Redis досягає maxmemory, йому потрібно вирішити, які дані видалити, щоб звільнити місце для нових. Існують різні політики витіснення:

  • noeviction: Нові записи не приймаються, якщо пам'ять заповнена.
  • allkeys-lru: Видаляє найменш нещодавно використані (LRU) ключі з усього набору.
  • volatile-lru: Видаляє LRU ключі тільки з тих, які мають TTL (час життя).
  • allkeys-lfu: Видаляє найменш часто використовувані (LFU) ключі з усього набору.
  • volatile-lfu: Видаляє LFU ключі тільки з тих, які мають TTL.
  • allkeys-random: Видаляє випадкові ключі з усього набору.
  • volatile-random: Видаляє випадкові ключі тільки з тих, які мають TTL.
  • volatile-ttl: Видаляє ключі з найменшим залишковим TTL.

Для кешу allkeys-lru або allkeys-lfu зазвичай є хорошим вибором.


maxmemory-policy allkeys-lru
2.3. Персистентність (Persistence)

Redis може зберігати дані на диск, щоб вони не втрачалися при перезапуску сервера. Є два основні механізми:

  • RDB (Redis Database Backup): Робить знімки даних через певні інтервали. Швидкий для відновлення, але може призвести до втрати даних, записаних між знімками.
    
    # Зберігати, якщо змінилося хоча б 10000 ключів за 60 секунд
    save 60 10000
    # Зберігати, якщо змінилося хоча б 1000 ключів за 300 секунд
    save 300 1000
    # Зберігати, якщо змінився хоча б 1 ключ за 900 секунд
    save 900 1
    
  • AOF (Append Only File): Записує кожну операцію запису в лог-файл. Забезпечує кращу збереженість даних, але може бути повільнішим і споживати більше дискового простору.
    
    appendonly yes
    appendfsync everysec # Зберігати AOF на диск кожну секунду
    

Ви можете використовувати обидва механізми одночасно. Для максимальної збереженості даних рекомендується AOF з appendfsync everysec. Для чистого кешу, який може бути відновлений з іншого джерела, персистентність можна вимкнути (закоментувати всі save рядки та встановити appendonly no).

3. Логування

Переконайтеся, що логування налаштовано для відстеження подій Redis.


logfile /var/log/redis/redis-server.log
loglevel notice

Переконайтеся, що директорія /var/log/redis/ існує і Redis має до неї права запису. Якщо ні, створіть її:


sudo mkdir -p /var/log/redis
sudo chown redis:redis /var/log/redis

4. Збереження та перезапуск Redis

Після внесення всіх змін до redis.conf, збережіть файл (Ctrl+O, Enter) і вийдіть (Ctrl+X). Потім перезапустіть службу Redis, щоб застосувати нові налаштування.


sudo systemctl restart redis-server
# Перезапускає службу Redis

5. Перевірка працездатності з новою конфігурацією

Після перезапуску перевірте статус служби та переконайтеся, що Redis працює без помилок.


sudo systemctl status redis-server

Тепер спробуйте підключитися з паролем через redis-cli:


redis-cli -a ВАШ_СКЛАДНИЙ_ПАРОЛЬ_ДЛЯ_REDIS ping
# Підключається до Redis з автентифікацією та надсилає PING

Ви повинні отримати PONG. Якщо ви перейменували або вимкнули команди, переконайтеся, що вони поводяться очікуваним чином.


# Спроба виконати вимкнену команду (має видати помилку)
redis-cli -a ВАШ_СКЛАДНИЙ_ПАРОЛЬ_ДЛЯ_REDIS FLUSHALL

# Спроба виконати перейменовану команду (має видати помилку)
redis-cli -a ВАШ_СКЛАДНИЙ_ПАРОЛЬ_ДЛЯ_REDIS CONFIG GET 
# Правильний виклик перейменованої команди
redis-cli -a ВАШ_СКЛАДНИЙ_ПАРОЛЬ_ДЛЯ_REDIS CONFIG_HIDDEN GET 

Якщо Redis налаштований на прослуховування приватного IP, переконайтеся, що ви можете підключитися з іншого сервера, використовуючи цей IP та порт 6379, а також пароль.

Резервне копіювання та обслуговування

Схема: Резервне копіювання та обслуговування
Схема: Резервне копіювання та обслуговування

Надійне резервне копіювання та регулярне обслуговування є ключовими аспектами будь-якої продакшн-системи. Для Redis це особливо важливо, оскільки дані зберігаються в оперативній пам'яті, і їх втрата може бути катастрофічною.

1. Що резервувати

Для Redis необхідно регулярно створювати резервні копії:

  • Файли персистентності Redis:
    • dump.rdb: Файл знімка бази даних RDB. Містить повний стан даних Redis на момент знімка.
    • appendonly.aof: Файл AOF. Містить послідовність команд, які можуть бути відтворені для відновлення стану.
    Ці файли зазвичай знаходяться в директорії даних Redis, зазначеній у dir в redis.conf (наприклад, /var/lib/redis/6379 або /var/lib/redis).
  • Конфігураційні файли Redis:
    • /etc/redis/redis.conf (або /etc/redis/6379.conf): Основний файл конфігурації.
  • Інші важливі файли: Якщо ви використовуєте Redis для специфічних цілей, переконайтеся, що створюєте резервні копії всіх пов'язаних скриптів, конфігурацій або даних.

2. Простий скрипт авторезервного копіювання

Ми створимо простий скрипт, який копіюватиме файли персистентності та конфігурації Redis. Цей скрипт можна запускати за розкладом за допомогою cron.

Створіть директорію для резервних копій:


sudo mkdir -p /var/backups/redis
sudo chown redisadmin:redisadmin /var/backups/redis

Створіть скрипт резервного копіювання:


sudo nano /usr/local/bin/backup_redis.sh

Вставте наступний вміст. Переконайтеся, що шляхи до файлів RDB/AOF та конфігурацій відповідають вашій інсталяції.


#!/bin/bash

# Налаштування
REDIS_DATA_DIR="/var/lib/redis" # Директорія, де знаходяться dump.rdb та appendonly.aof
REDIS_CONF_FILE="/etc/redis/redis.conf" # Файл конфігурації Redis
BACKUP_DIR="/var/backups/redis" # Директорія для зберігання резервних копій
TIMESTAMP=$(date +"%Y%m%d%H%M%S")
BACKUP_NAME="redis_backup_${TIMESTAMP}.tar.gz"

# Перевірка, що Redis запущено, та збереження RDB перед резервним копіюванням
echo "Збереження Redis RDB на диск..."
redis-cli -a ВАШ_СКЛАДНИЙ_ПАРОЛЬ_ДЛЯ_REDIS BGSAVE
# Даємо Redis трохи часу на збереження
sleep 10

echo "Запуск резервного копіювання Redis..."

# Створення архіву
sudo tar -czf "${BACKUP_DIR}/${BACKUP_NAME}" \
    -C "${REDIS_DATA_DIR}" dump.rdb appendonly.aof \
    "${REDIS_CONF_FILE}" \
    --remove-files-from "${REDIS_DATA_DIR}" # Опціонально: якщо хочете видалити старі RDB/AOF після копіювання

# Перевірка успішності
if [ $? -eq 0 ]; then
    echo "Резервна копія Redis успішно створена: ${BACKUP_DIR}/${BACKUP_NAME}"
    # Очищення старих резервних копій (наприклад, зберігати лише останні 7 днів)
    find "${BACKUP_DIR}" -type f -name 'redis_backup_*.tar.gz' -mtime +7 -delete
    echo "Старі резервні копії очищено."
else
    echo "Помилка створення резервної копії Redis."
fi

# Якщо ви використовуєте AOF, можна примусово перезаписати його для зменшення розміру
# echo "Перезапис файлу AOF..."
# redis-cli -a ВАШ_СКЛАДНИЙ_ПАРОЛЬ_ДЛЯ_REDIS BGREWRITEAOF

echo "Скрипт резервного копіювання завершено."

Зробіть скрипт виконуваним:


sudo chmod +x /usr/local/bin/backup_redis.sh

3. Налаштування Cron для автоматичного запуску резервного копіювання

Додайте скрипт до cron, щоб він запускався автоматично. Наприклад, щодня о 03:00 ранку.


sudo crontab -e

Додайте наступний рядок в кінець файлу:


0 3 * * * /usr/local/bin/backup_redis.sh >> /var/log/redis_backup.log 2>&1

Цей запис означає: "О 03:00 щодня, щомісяця, кожного дня тижня, запускати /usr/local/bin/backup_redis.sh та перенаправляти весь вивід у /var/log/redis_backup.log".

4. Куди зберігати резервні копії (зовнішній S3 / окремий VPS)

Зберігання резервних копій на тому ж сервері, що й вихідні дані, є ризикованим. Якщо сервер вийде з ладу (апаратний збій, крадіжка, пожежа), ви втратите і дані, і резервні копії. Завжди зберігайте критично важливі резервні копії віддалено:

  • Хмарне сховище (S3-сумісне): Amazon S3, DigitalOcean Spaces, Backblaze B2 або аналогічні сервіси. Для цього можна модифікувати скрипт резервного копіювання, додавши команду aws s3 cp (якщо встановлено AWS CLI) або rclone copy для завантаження архіву в хмару.
    
    # Приклад додавання до скрипта backup_redis.sh
    # Після успішного створення архіву:
    # aws s3 cp "${BACKUP_DIR}/${BACKUP_NAME}" s3://your-s3-bucket/redis-backups/
    
  • Окремий VPS або виділений сервер: Ви можете використовувати rsync або scp для копіювання резервних копій на інший ваш сервер.
    
    # Приклад додавання до скрипта backup_redis.sh
    # Після успішного створення архіву:
    # scp "${BACKUP_DIR}/${BACKUP_NAME}" user@remote_server:/path/to/remote/backups/
    
  • Спеціалізовані інструменти: Такі як Restic або BorgBackup, які забезпечують дедуплікацію, шифрування та інкрементальне резервне копіювання. Вони вимагають складнішого налаштування, але дуже ефективні.

5. Оновлення: rolling vs maintenance window

Оновлення Redis та операційної системи — важлива частина обслуговування. Підходи до оновлення:

  • Maintenance Window (Вікно обслуговування): Традиційний підхід, при якому сервер або застосунок тимчасово відключається від роботи, проводяться оновлення, а потім все повертається в дію.
    • Плюси: Простіше реалізувати, менший ризик непередбачених проблем під час роботи.
    • Мінуси: Простій сервісу.
    Для Redis це може включати зупинку служби, оновлення, перевірку та запуск.
  • Rolling Updates (Поступові оновлення): Застосовується в кластерних або високодоступних конфігураціях, де оновлюються окремі вузли по черзі, не перериваючи роботу всього сервісу.
    • Плюси: Відсутність простою.
    • Мінуси: Значно складніше в реалізації, вимагає кількох екземплярів Redis та механізмів реплікації/відмовостійкості (Redis Sentinel, Redis Cluster).

Для одиночного екземпляра Redis на VPS, як у нашому випадку, зазвичай використовується підхід з вікном обслуговування. Плануйте оновлення на час мінімального навантаження. Завжди робіть повну резервну копію перед оновленням!

Процес оновлення Redis (з репозиторіїв):


sudo systemctl stop redis-server # Зупинити Redis
sudo apt update && sudo apt upgrade -y # Оновити систему та Redis
sudo systemctl start redis-server # Запустити Redis
sudo systemctl status redis-server # Перевірити статус

При компіляції з вихідних кодів процес оновлення включатиме завантаження нових вихідних кодів, компіляцію та повторну інсталяцію, а потім перезапуск служби.

Вирішення проблем + FAQ

У цьому розділі ми розглянемо типові проблеми, з якими можна зіткнутися під час роботи з Redis, і надамо відповіді на поширені запитання.

1. Redis не запускається або не відповідає

Помилка: Після встановлення або перезапуску systemctl status redis-server показує "failed" або "inactive".

Що перевірити:

  • Логи Redis: Найперше місце для пошуку підказок. Перевірте файл логів Redis, вказаний у redis.conf (за замовчуванням /var/log/redis/redis-server.log або /var/log/redis_6379.log).
  • Системні логи: Перевірте логи systemd: sudo journalctl -u redis-server.service.
  • Конфігураційний файл: Переконайтеся, що в /etc/redis/redis.conf немає синтаксичних помилок. Будь-яка друкарська помилка може перешкодити запуску.
  • Доступність порту: Можливо, інший процес вже займає порт 6379. Перевірте: sudo ss -tulpn | grep 6379.
  • Права доступу: Переконайтеся, що користувач Redis має права на читання конфігураційного файлу, запис у директорію логів та директорію даних (dir у redis.conf).

Як виправити: Виправте помилки в конфігу, звільніть порт або змініть порт Redis, надайте потрібні права. Після кожної зміни спробуйте перезапустити Redis: sudo systemctl restart redis-server.

2. "Connection refused" при підключенні до Redis

Помилка: При спробі підключитися з redis-cli або з програми ви отримуєте "Could not connect to Redis at 127.0.0.1:6379: Connection refused".

Що перевірити:

  • Статус Redis: Переконайтеся, що Redis запущено: sudo systemctl status redis-server.
  • Налаштування bind: Перевірте параметр bind у redis.conf. Якщо там вказано 127.0.0.1, то підключитися можна лише з того ж сервера. Якщо ви намагаєтеся підключитися з іншого сервера, bind має бути встановлений на приватну IP-адресу сервера Redis або 0.0.0.0 (що вимагає ретельного налаштування фаєрволу).
  • Фаєрвол (UFW): Переконайтеся, що фаєрвол не блокує підключення до порту 6379. Перевірте статус UFW: sudo ufw status. Якщо Redis має бути доступний з інших IP, переконайтеся, що правило allow 6379 або allow from X.X.X.X to any port 6379 активне.

Як виправити: Запустіть Redis, скоригуйте bind у redis.conf та/або правила фаєрволу. Не забудьте перезапустити Redis після зміни конфігу: sudo systemctl restart redis-server.

3. "NOAUTH Authentication required"

Помилка: Ви отримуєте цю помилку при спробі виконати команди Redis.

Що перевірити: Ви встановили пароль (requirepass) у redis.conf, але не надали його при підключенні.

Як виправити: Надавайте пароль при підключенні через redis-cli -a ВАШ_ПАРОЛЬ або налаштуйте вашу програму для використання пароля.

4. Redis споживає занадто багато пам'яті

Помилка: Redis займає більше пам'яті, ніж очікувалося, або наближається до ліміту maxmemory.

Що перевірити:

  • maxmemory та maxmemory-policy: Переконайтеся, що ці параметри правильно налаштовані в redis.conf.
  • Використання пам'яті: Використовуйте команду redis-cli info memory для отримання докладної інформації про споживання пам'яті Redis. Зверніть увагу на used_memory_human та used_memory_peak_human.
  • Структури даних: Перевірте, які структури даних зберігаються в Redis і наскільки вони великі. Команда redis-cli --scan або MEMORY USAGE key (Redis 4.0+) може допомогти.
  • Фрагментація пам'яті: mem_fragmentation_ratio у redis-cli info memory. Високий коефіцієнт (більше 1.5) може вказувати на фрагментацію, яка збільшує споживання пам'яті.

Як виправити: Збільшіть maxmemory (якщо є вільна RAM), змініть maxmemory-policy, оптимізуйте зберігання даних у Redis, використовуйте більш компактні структури даних. Перезапуск Redis може тимчасово знизити фрагментацію.

5. Який VPS-конфіг мінімально підійде?

Для базових завдань, таких як кешування невеликого веб-сайту або невеликі черги, мінімальний конфіг — це 1 vCPU, 1 GB RAM та 20 GB SSD. Цього буде достатньо для Redis, який зберігає кілька сотень мегабайт даних. Однак для більш серйозних проєктів рекомендується 2 vCPU, 4 GB RAM та 80 GB SSD.

6. Що обрати — VPS чи dedicated для цього завдання?

Вибір між VPS та виділеним сервером залежить від масштабу вашого завдання, вимог до продуктивності та бюджету. Для більшості середніх та малих проєктів (сайти, невеликі SaaS, ігрові сервери для друзів, особисті ноди) VPS буде більш ніж достатнім та економічно вигідним рішенням. Виділений сервер стає необхідним, коли обсяг даних у Redis обчислюється десятками гігабайт, потрібна абсолютна передбачуваність продуктивності без "шуму сусідів", або коли у вас є дуже специфічні апаратні вимоги.

7. Як моніторити Redis?

Для моніторингу Redis можна використовувати команду redis-cli info (наприклад, redis-cli info memory, redis-cli info clients, redis-cli info persistence). Для більш просунутого моніторингу рекомендується використовувати інструменти, такі як Prometheus з Grafana, використовуючи експортер Redis, або спеціалізовані рішення для моніторингу серверів, які збирають метрики Redis (наприклад, Netdata).

8. Redis Cluster проти Redis Sentinel?

Redis Sentinel забезпечує високу доступність, автоматично перемикаючись на репліку в разі відмови майстра. Він призначений для відмовостійкості. Redis Cluster, з іншого боку, забезпечує масштабованість та високу доступність, дозволяючи розподіляти дані по кількох вузлах та автоматично шардувати їх. Якщо вам потрібна лише відмовостійкість для одного екземпляра Redis, Sentinel — ваш вибір. Якщо вам потрібно масштабувати дані та запити на кілька вузлів, використовуйте Cluster.

Висновки та наступні кроки

Схема: Висновки та наступні кроки
Схема: Висновки та наступні кроки

Вітаємо! Ви успішно встановили та налаштували Redis на своєму VPS або виділеному сервері, забезпечивши при цьому базовий рівень безпеки та продуктивності. Тепер у вас є потужний інструмент для кешування, керування сесіями, черг повідомлень та багатьох інших завдань, який готовий до інтеграції з вашими програмами.

Подальші кроки для оптимізації та масштабування вашої інсталяції Redis можуть включати:

  • Налаштування моніторингу: Інтегруйте Redis із системою моніторингу (наприклад, Prometheus + Grafana, Netdata) для відстеження використання пам'яті, кількості запитів, затримок та інших ключових метрик. Це допоможе виявляти проблеми до того, як вони вплинуть на ваших користувачів.
  • Оптимізація продуктивності програми: Переконайтеся, що ваша програма ефективно використовує Redis, мінімізуючи кількість запитів, використовуючи правильні структури даних та уникаючи тривалих блокуючих операцій.
  • Масштабування та висока доступність: Якщо ваш проєкт зростає, розгляньте можливість налаштування Redis Sentinel для автоматичної відмовостійкості або Redis Cluster для горизонтального масштабування та розподілу навантаження.

Продовжуйте експериментувати з різними функціями Redis та інтегрувати його у свої проєкти, щоб розкрити весь потенціал цього дивовижного інструменту.

Чи був цей гайд корисним?

Ваш відгук допомагає нам покращувати гайди.

Share this post:

Надішліть гайд тому, кому він може стати в пригоді.

Telegram VKVK WhatsApp Facebook LinkedIn XX

встановлення та налаштування Redis на VPS: безпека та висока продуктивність
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.