✉️ Пост 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 • Нет сложной аналитики