Коротка відповідь
middleRedis — це in‑memory key‑value store, що використовується для кешування, черг повідомлень і швидкого зберігання сесій. Я працюю через простий протокол TCP, де ключі мають типи як строки, списки, множини й хеші.
Повне пояснення
Що це і навіщо Redis – розподілена in‑memory база даних, що підтримує різні структури даних (строки, списки, множини, хеші). Його швидкість обумовлена тим, що всі дані зберігаються у RAM, а не на диску. Це робить Redis ідеальним для кешування результатів запитів, зберігання сесій користувачів, реалізації черг повідомлень (наприклад, RabbitMQ‑подібних патернів) і лічильників.
Ключові терміни
- Key‑value store – модель зберігання, де кожен ключ асоціюється із значенням.
- In‑memory – дані зберігаються у оперативній пам’яті.
- Persistence – Redis може зберігати дані на диск (RDB, AOF) для відновлення після падіння.
- Pub/Sub – модель публікації/підписки для розсилки повідомлень.
- Transactions – атомарні команди через MULTI/EXEC.
Як це працює Redis запускається як сервер, що слухає порт (за замовчуванням 6379). Клієнти підключаються через TCP і надсилають команди у простому текстовому протоколі RESP. Сервер обробляє кожну команду синхронно, тому всі операції виконуються в одному потоці. Це забезпечує високу пропускну здатність і мінімальну латентність.
Приклади команд
SET user:1:name "Ivan"
GET user:1:name
LPUSH queue:tasks "task1"
BRPOP queue:tasks 0
Тестування і деплой
- Для CI можна запускати Redis у Docker‑контейнері:
docker run -d --name redis-test -p 6379:6379 redis. - У GitHub Actions можна використати
services.redisдля інтеграційних тестів.
Оптимізація процесів
- Використання LRU eviction policy для автоматичного видалення найменш використовуваних ключів.
- Паралельні клієнти з пулом підключень (
redis-pyмаєConnectionPool).
Безпека
- Аутентифікація через
requirepassу конфігурації. - Підключення за TLS (Redis 6+ підтримує шифрування).
Особливості в контексті DevOps
- Redis часто розгортається як sidecar у Kubernetes, використовуючи ConfigMap для налаштувань.
- Для масштабування застосовують Redis Cluster (шардинг) або Sentinel (HA).
Типові помилки
- Перевищення пам’яті → Redis завершує процес.
- Неправильна конфігурація
maxmemory-policy→ дані не видаляються. - Відсутність persistence → втрата даних після рестарту.
- Підключення без TLS у публічному середовищі → прослуховування.
- Використання
GETдля великих ключів → блокування сервера. - Неправильне використання
BRPOPбез timeout → блокування клієнта. - Підключення до Redis без аутентифікації → відкритий доступ.
- Неправильне налаштування
appendonly→ великий файл AOF.
Cheatsheet
SET key value– зберігає.GET key– читає.DEL key– видаляє.LPUSH list value/RPUSH– додає до списку.BLPOP list timeout– блокує, доки елемент не з’явиться.EXPIRE key seconds– встановлює TTL.
Follow‑up питання
- Як реалізувати кешування у Redis з TTL?
- Які політики викиду підтримує Redis і коли їх використовувати?