✉️ Пост 40. Что такое Redis
Redis - это in-memory key-value хранилище. Расшифровка - Remote Dictionary Server - это база данных, которая хранит данные в оперативной памяти (RAM), а не на диске, как классические СУБД. И именно поэтому она дико быстрая.
🧠 Главная идея Redis
В обычной базе: запрос → диск → чтение → ответ
В Redis: запрос → RAM → ответ
А разница между диском и RAM - это космос по скорости. Поэтому Redis используют там, где важна минимальная задержка.
📦 Как в Redis лежат данные:
Базовая модель:
key → value
Пример:
"user:123" → "Alice"
Но Redis - это не просто "строка к строке".
Он поддерживает разные типы данных.
🔹 Типы данных в Redis 1️⃣ String Самый простой тип.
SET user:1 "Alice" GET user:1
Это может быть:
- строка
- число
- JSON (как строка)
- токен
- сериализованный объект
Максимальный размер значения - до 512 МБ.
2️⃣ Hash Это как объект или словарь.
HSET user:1 name "Alice" HSET user:1 age 25
Внутри:
user:1 → { name: "Alice", age: 25 }
Очень удобно для хранения сущностей.
3️⃣ List Список элементов
LPUSH queue task1 LPUSH queue task2
Используется как очередь.
4️⃣ Set Множество без повторов.
SADD users 1 SADD users 2
Уникальные значения, без дублей. 5️⃣ Streams
Тип для работы с событиями.
Очень похож на Kafka по концепции, но легче и проще.
🧩 Где физически лежат данные?
👉😶 Основные данные лежат в RAM.
Но Redis может:
• сохранять снапшоты на диск (RDB) • писать журнал операций (AOF) • комбинировать оба подхода
То есть он может быть:
• чисто кэшем • или полноценной БД с персистентностью
📎 Механизмы сохранения
🔹 RDB (snapshot)
Redis периодически делает снимок состояния и пишет его в файл.
Плюс: быстро восстанавливается
Минус: можно потерять данные между снапшотами
🔹 AOF (Append Only File)
Redis записывает каждую операцию в лог:
SET user:1 Alice
Плюс: минимальная потеря данных
Минус: файл может расти, нужно периодически переписывать
⚡️ Почему Redis такой быстрый:
1️⃣ Данные в RAM 2️⃣ Однопоточная модель выполнения 3️⃣ Нет сложных join-ов 4️⃣ Простая структура хранения
Redis однопоточный для обработки команд. Но за счет этого нет блокировок и конкуренции.
🚀 Где используется Redis ✅ Кэширование
Самый частый кейс.
Например:
• результаты запросов • карточки товаров • сессии
Схема:
БД → Redis → клиент
✅ Сессии пользователей
Хранение:
session:abc123 → userId=42
✅ Rate limiting
Ограничение количества запросов.
✅ Очереди и pub/sub
Redis можно использовать как брокер сообщений.
✅ Лидеры, блокировки, распределенные локи
Redis поддерживает атомарные операции.
⚠️ Ограничения Redis
• Все данные должны помещаться в RAM • Нет сложных SQL-запросов • Нет join • Нет сложной аналитики