Як встановити та налаштувати Redis на Linux: повний покроковий посібник
Redis — це потужне, відкрите програмне забезпечення, сховище структур даних у пам’яті, яке широко використовується як база даних, кеш і брокер повідомлень. Відомий своєю винятковою продуктивністю та універсальністю, Redis — це рішення, яке вибирають розробники, які хочуть значно прискорити програми шляхом кешування часто запитуваних даних, управління сеансами та обробки аналітики в реальному часі. Незалежно від того, чи ви запускаєте високонавантажену веб-програму на плані VPS Hosting або керуєте виділеною інфраструктурою, цей комплексний посібник проведе вас через кожен крок встановлення, налаштування та захисту Redis у системі Linux.
Що таке Redis і чому його варто використовувати?
Перш ніж перейти до процесу встановлення, варто зрозуміти, що робить Redis таким популярним:
- Сховище в пам’яті: Redis зберігає дані в RAM, що робить операції читання та запису надзвичайно швидкими — часто завершуються менше ніж за мілісекунду.
- Універсальні структури даних: підтримує рядки, хеші, списки, набори, відсортовані набори, бітмапи та інше.
- Параметри збереження: незважаючи на те, що це сховище в пам’яті, Redis може зберігати дані на диску, щоб вони збереглися після перезавантаження.
- Обмін повідомленнями Pub/Sub: Redis підтримує шаблони обміну повідомленнями publish/subscribe для спілкування в реальному часі між сервісами.
- Широка підтримка мов: офіційні бібліотеки клієнтів існують для Python, PHP, Node.js, Java, Ruby, Go та багатьох інших.
Redis особливо цінний у середовищах, де критична продуктивність програми — наприклад, коли ваш бекенд розміщений на Dedicated Server, який обслуговує мільйони запитів на день.
Передумови
Перш ніж розпочати, переконайтеся, що у вас є:
- Сервер Linux з Ubuntu/Debian або CentOS/RHEL
- Доступ root або sudo до сервера
- Базове розуміння командного рядка Linux
- Активне підключення до Інтернету для завантаження пакетів
Крок 1: Оновіть вашу систему
Завжди починайте з оновлення індексу пакетів вашої системи та оновлення встановлених пакетів до їхніх найновіших версій. Це забезпечує сумісність і безпеку:
sudo apt update && sudo apt upgrade -yДля систем CentOS/RHEL:
sudo yum update -yУтримання вашого сервера в актуальному стані — це фундаментальна практика безпеки, особливо у виробничих середовищах.
Крок 2: Встановіть Redis
Більшість основних дистрибутивів Linux включають Redis у свої офіційні репозиторії пакетів, що робить встановлення простим.
На Ubuntu / Debian
sudo apt install redis-server -yНа CentOS / RHEL
Системи CentOS/RHEL вимагають спочатку ввімкнути репозиторій EPEL (Extra Packages for Enterprise Linux):
sudo yum install epel-release -y
sudo yum install redis -y> Примітка: На новіших версіях CentOS/RHEL (8+) ви можете використовувати dnf замість yum:
> “`bash
> sudo dnf install redis -y
> “`
Крок 3: Перевірте встановлення
Після завершення встановлення підтвердіть, що Redis встановлено правильно, перевіривши його версію:
redis-server --versionОчікуваний результат (приклад):
Redis server v=7.0.12 sha=00000000:0 malloc=jemalloc-5.3.0 bits=64 build=...Якщо ви бачите номер версії, Redis успішно встановлено на вашій системі.
Крок 4: Запустіть та ввімкніть сервіс Redis
Після встановлення вам потрібно запустити сервіс Redis і налаштувати його на автоматичний запуск при завантаженні системи.
На Ubuntu / Debian
sudo systemctl start redis
sudo systemctl enable redisНа CentOS / RHEL
sudo systemctl start redis
sudo systemctl enable redisПеревірте, чи Redis запущено
sudo systemctl status redisОчікуваний результат:
● redis.service - Advanced key-value store
Loaded: loaded (/lib/systemd/system/redis.service; enabled)
Active: active (running) since ...Зелений статус active (running) підтверджує, що Redis працює правильно.
Крок 5: Налаштуйте Redis
Поведінка Redis контролюється його основним файлом конфігурації:
- Ubuntu/Debian:
/etc/redis/redis.conf - CentOS/RHEL:
/etc/redis.conf
Відкрийте файл конфігурації за допомогою текстового редактора:
sudo nano /etc/redis/redis.confНижче наведені найважливіші параметри конфігурації, які варто переглянути та відрегулювати.
5.1 Встановіть пароль (аутентифікація)
За замовчуванням Redis не вимагає аутентифікації. Для будь-якого виробничого середовища встановлення надійного пароля є важливим:
Знайдіть рядок, що містить # requirepass та оновіть його:
requirepass your_strong_password_hereВиберіть довгий, випадково згенерований пароль. Redis надзвичайно швидкий, що означає, що атаки перебору можуть спробувати сотні тисяч здогадок на секунду без обмеження швидкості.
5.2 Прив’яжіть IP-адресу
За замовчуванням Redis прив’язується лише до 127.0.0.1 (localhost), що запобігає зовнішньому доступу. Це найбезпечніше стандартне налаштування.
Якщо вашій програмі потрібно підключитися до Redis з іншого сервера, ви можете прив’язати додаткову IP-адресу:
bind 127.0.0.1 192.168.1.100> Попередження про безпеку: ніколи не прив’язуйте Redis до 0.0.0.0 (всі інтерфейси) на публічно доступному сервері без належних правил брандмауера. Відкриті екземпляри Redis — це поширений вектор атак.
5.3 Змініть стандартний порт
Redis прослуховує порт 6379 за замовчуванням. Зміна цього порту додає рівень приховування:
port 6380Не забудьте оновити правила брандмауера та рядки підключення програми, якщо ви змінюєте порт.
5.4 Застосуйте зміни конфігурації
Після редагування redis.conf перезапустіть сервіс Redis, щоб застосувати всі зміни:
sudo systemctl restart redisКрок 6: Протестуйте встановлення Redis
Використовуйте вбудований Redis CLI (інтерфейс командного рядка) для перевірки правильної роботи Redis:
redis-cliЯкщо ви встановили пароль, спочатку аутентифікуйтеся:
AUTH your_strong_password_hereЗапустіть тест Ping
pingОчікувана відповідь:
PONGВстановіть та отримайте пару ключ-значення
SET mykey "Hello, Redis!"
GET mykeyОчікувана відповідь:
"Hello, Redis!"Якщо Redis правильно повертає збережене значення, ваше встановлення повністю функціональне, а база даних зберігає та отримує дані як очікується.
Вийдіть з CLI
exitКрок 7: Налаштуйте Redis як фоновий демон (необов’язково)
Якщо ви хочете, щоб Redis запускався як фоновий процес демона (а не як процес переднього плану), налаштуйте параметр daemonize у redis.conf:
daemonize yesПісля збереження файлу перезапустіть Redis:
sudo systemctl restart redisПеревірте, чи сервіс запущено у фоні:
sudo systemctl status redisВи також можете підтвердити, що процес Redis активний, використовуючи:
ps aux | grep redisКрок 8: Ввімкніть збереження Redis (необов’язково, але рекомендується)
За замовчуванням Redis зберігає дані лише в пам’яті, що означає, що дані втрачаються, якщо сервер перезавантажується. Redis надає два механізми збереження для вирішення цієї проблеми:
Варіант 1: RDB (Redis Database Backup) — снімки
RDB створює снімки вашого набору даних у певний момент часу через певні інтервали. Налаштуйте його у redis.conf:
# Save a snapshot if at least 1 key changed in 900 seconds (15 minutes)
save 900 1
# Save a snapshot if at least 10 keys changed in 300 seconds (5 minutes)
save 300 10
# Save a snapshot if at least 10,000 keys changed in 60 seconds
save 60 10000RDB ефективний для резервних копій та відновлення після катастроф, але може втратити дані, написані між снімками.
Варіант 2: AOF (Append Only File) — реєстрація запису
AOF реєструє кожну операцію запису у файл, забезпечуючи набагато більш сильні гарантії надійності:
appendonly yesВи також можете налаштувати політику синхронізації AOF:
# Options: always, everysec, no
appendfsync everysecalways— найбезпечніша, але найповільніша (синхронізується після кожного запису)everysec— хороший баланс продуктивності та безпеки (синхронізується щосекунди)no— найшвидша, але залежить від розкладу скидання ОС
> Найкраща практика: для виробничих середовищ використовуйте як RDB, так і AOF разом для максимальної надійності даних.
Крок 9: Захист Redis — найкращі практики
Безпека критична для будь-якого розгортання Redis. Дотримуйтеся цих найкращих практик для посилення вашого екземпляра Redis:
1. Ввімкніть аутентифікацію за паролем
Як описано на кроці 5.1, завжди встановлюйте сильне значення requirepass у redis.conf.
2. Обмежте мережевий доступ
- Прив’яжіть Redis до
127.0.0.1якщо дистанційний доступ явно не потрібен. - Використовуйте приватну мережу або VPN для спілкування Redis між серверами.
3. Налаштуйте правила брандмауера
Дозволяйте трафік Redis лише з надійних IP-адрес. Використовуючи ufw на Ubuntu:
sudo ufw allow from 192.168.1.0/24 to any port 6379
sudo ufw deny 6379Використовуючи firewalld на CentOS/RHEL:
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="6379" accept'
sudo firewall-cmd --reload4. Перейменуйте або вимкніть небезпечні команди
Redis має потужні адміністративні команди (як-от FLUSHALL, CONFIG, DEBUG), які можуть бути використані. Перейменуйте або вимкніть їх у redis.conf:
rename-command FLUSHALL ""
rename-command CONFIG "SECURE_CONFIG_XYZ123"
rename-command DEBUG ""5. Запустіть Redis як користувач без прав root
Пакет Redis у більшості дистрибутивів уже створює виділеного користувача системи redis. Переконайтеся, що Redis ніколи не запускається від root.
6. Утримуйте Redis в актуальному стані
Регулярно оновлюйте Redis, щоб виправити відомі вразливості:
sudo apt update && sudo apt upgrade redis-server -yКрок 10: Інтеграція Redis з вашими програмами
З встановленим і захищеним Redis ви можете тепер інтегрувати його у свій стек програм. Ось короткий огляд популярних інтеграцій мов:
Python — redis-py
pip install redisimport redis
r = redis.Redis(host='127.0.0.1', port=6379, password='your_password', decode_responses=True)
r.set('greeting', 'Hello from Python!')
print(r.get('greeting'))PHP — розширення phpredis
sudo apt install php-redis -y<?php
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->auth('your_password');
$redis->set('greeting', 'Hello from PHP!');
echo $redis->get('greeting');
?>Node.js — ioredis
npm install ioredisconst Redis = require('ioredis');
const redis = new Redis({ host: '127.0.0.1', port: 6379, password: 'your_password' });
redis.set('greeting', 'Hello from Node.js!');
redis.get('greeting').then(value => console.log(value));Redis легко інтегрується практично з кожною сучасною веб-фреймворком і CMS, включаючи WordPress, Laravel, Django та Express.js — що робить його неоціненним інструментом для стека будь-якого розробника.
Поширені випадки використання Redis
Розуміння того, де Redis виділяється, допомагає вам отримати максимум від вашого розгортання:
| Випадок використання | Опис |
|---|---|
| Зберігання сеансів |
