Что такое Redis?

Redis — хранилище данных в оперативной памяти (in-memory) со структурами ключ–значение и расширенными типами: строки, списки, множества, хеши, sorted sets, streams. Используют для кэша, сессий, очередей, rate limiting и pub/sub с латентностью порядка миллисекунд.
flowchart TB App["Приложение"] --> Redis["Redis"] Redis --> RAM["Оперативная память"] Redis -.->|RDB / AOF| Disk["Диск"]
Данные в RAM; опционально сбрасываются на диск для восстановления после перезапуска.
Модель данных
Ключ — строка; значение зависит от команды: SET/GET для строк, HSET для объектов, LPUSH для очередей. TTL (EXPIRE) задаёт время жизни ключа — типичный паттерн для кэша API-ответов и сессий пользователей.
Персистентность
Чисто in-memory данные теряются при рестарте. Redis поддерживает RDB (снимки через интервал) и AOF (журнал каждой записи). Для кэша персистентность часто отключают; для очередей и счётчиков включают AOF с fsync по политике everysec.
Кластер и Sentinel
Redis Sentinel следит за master/replica и выполняет failover. Redis Cluster шардирует ключи по 16384 слотам на несколько узлов — горизонтальное масштабирование при объёме данных больше одной машины.
Типичные сценарии
- Кэш результатов тяжёлых SQL-запросов (cache-aside).
- Хранение JWT-сессий и blacklist токенов.
- Leaderboards и счётчики через sorted sets.
- Лёгкий message broker через Streams или Lists.
Официальный сайт: redis.io.


Частые вопросы
Redis — это база данных или кэш?
Изначально in-memory store; часто используют как кэш, но с персистентностью и репликацией подходит и для очередей и сессий.
Чем Redis отличается от Memcached?
Redis поддерживает сложные типы, репликацию, персистентность и pub/sub; Memcached проще и только строки, зато минималистичен для чистого кэша.
Нужен ли Redis при PostgreSQL?
Не обязателен: PG справляется сам. Redis снимает нагрузку с чтений и ускоряет горячие ключи, когда латентность критична.
Другие термины в теме «Базы данных»
Не хватает деталей?
Напишите, что уточнить по теме «Redis» — это помогает улучшать материал и подсказывает, какие термины добавить дальше. Email необязателен: укажите, если хотите ответ только для вас (мы не шлём рассылки).