Redis: от основ до продвинутых сценариев

Этот набор карточек охватывает Redis от базовых концепций до продвинутых архитектурных решений, которые используются в высоконагруженных системах. Вы разберёте, как Redis работает как in-memory хранилище и почему он обеспечивает такую высокую производительность, а также поймёте его ограничения и риски. Внутри набора подробно раскрываются ключевые темы: структуры данных (string, list, set, sorted set, hash) и их практическое применение, стратегии кэширования (cache-aside, write-through, write-behind), управление TTL и cache invalidation, а также типичные проблемы вроде cache stampede и cache avalanche. Отдельное внимание уделяется персистентности (RDB, AOF), транзакциям, Lua-скриптам и атомарности операций. Вы изучите, как Redis используется как message broker (Pub/Sub, Streams), чем он отличается от Kafka и какие ограничения у него есть. Также рассматриваются вопросы масштабирования и отказоустойчивости: репликация, Redis Sentinel, Redis Cluster, шардирование и выбор eviction policy. Практические кейсы включают реализацию очередей, rate limiting, distributed locks и лидербордов. Этот набор будет полезен как для подготовки к техническим собеседованиям, так и для проектирования реальных систем с Redis в продакшене.

You can take a test to reveal missed lore before start a training.

Test Your Might

You can start studying this pack. You'll receive 260 messages to help you review each card multiple times, following the principles of the forgetting curve.

Learn more about the spaced repetition method.

Schedule daily card reviews to quickly memorize or solidify the knowledge until it becomes second nature.

Learn more about daily practices.
Redis как система хранения данных

Что такое Redis как система хранения данных? Кратко про in-memory, основные сценарии использования и отличие от традиционных БД.

1/65
Redis — преимущества и ограничения in-memory хранения

Краткий обзор преимуществ и ограничений хранения данных в памяти (in-memory) в Redis: скорость, потребление памяти, риск потери данных при сбоях и практические рекомендации.

2/65
Redis: cache vs основное хранилище

В каких сценариях Redis используется как cache, а в каких — как основное хранилище данных?

3/65
Redis vs реляционные базы данных

Чем Redis отличается от реляционных баз данных в моделях данных, транзакциях и консистентности?

4/65
Redis: основные структуры данных

Обзор основных структур данных Redis: string, list, set, sorted set, hash и типичные сценарии применения.

5/65
Redis: строки (string)

Как работают строки (string) в Redis, включая ограничения размера и атомарные операции?

6/65
Списки, push/pop и очереди

Как работают списки (list), включая операции push/pop и сценарии очередей?

7/65
Redis: hash vs JSON-документ

Как использовать hash в Redis для хранения объектов и чем он отличается от JSON-документа (например, через модуль RedisJSON)?

8/65
Множества (Set)

Как работают множества (set), включая уникальность элементов и операции пересечения/объединения?

9/65
Сортированные множества (sorted set)

Что это: sorted set — коллекция уникальных членов (member) с числовым score, по которому выполняется упорядочивание. Часто используется для рейтингов, лидеров, приоритетных очередей и таймлайнов.

10/65
Стратегии кэширования и их реализация в Redis

Какие стратегии кэширования существуют (cache-aside, write-through, write-behind), и как они реализуются в Redis?

11/65
write-through cache

Как реализуется write-through cache и какие у него плюсы и минусы?

12/65
Cache-aside (lazy loading)

Что такое cache-aside (lazy loading) и как он работает при чтении и обновлении данных.

13/65
write-behind (write-back)

Что такое write-behind (write-back) и какие риски он несёт?

14/65
Cache invalidation — очистка и обновление кэша

Что такое cache invalidation и какие подходы используются для её реализации?

15/65
TTL в Redis

Кратко про TTL (time-to-live) в Redis: как задать время жизни ключа, как Redis удаляет истёкшие ключи и какие команды используются для управления временем жизни.

16/65
Passive и Active expiration (механизмы истечения TTL)

Чем отличается passive и active expiration механизм?

17/65
Массовое истечение ключей (cache avalanche)

Какие проблемы могут возникать при массовом истечении ключей (cache avalanche)?

18/65
Cache stampede — что это и как Redis помогает

Что такое cache stampede и как Redis помогает его избежать?

19/65
Redis: механизмы персистентности (RDB, AOF)

Какие механизмы персистентности есть в Redis (RDB, AOF) и как они работают?

20/65
AOF (fsync политики) — настройка и компромиссы

Кратко о том, как настраивается AOF в Redis (параметр appendfsync) и какие у этого компромиссы между производительностью и надёжностью.

21/65
RDB vs AOF (Redis) — производительность и надёжность

В чем разница между RDB snapshot и AOF логированием, включая производительность и надёжность?

22/65
Атомарные операции в Redis

Какие операции в Redis являются атомарными и почему?

23/65
Комбинированный режим RDB + AOF

Как работает комбинированный режим RDB + AOF?

24/65
Когда Lua предпочтительнее нескольких команд Redis?

В каких сценариях Lua предпочтительнее нескольких команд Redis?

25/65
Optimistic locking в Redis (WATCH)

Коротко: optimistic locking в Redis реализуется через команды WATCH + MULTI + EXEC. Клиент «наблюдает» указанные ключи; если кто-то изменит их до вызова EXEC, транзакция отменяется и клиент получает сигнал повторить операцию.

26/65
Redis: MULTI/EXEC транзакции и отсутствие rollback

Как работают транзакции в Redis (MULTI/EXEC) и почему нет автоматического rollback?

27/65
Ограничения транзакций Redis vs ACID БД

Какие ограничения транзакций Redis по сравнению с ACID БД?

28/65
Redis Pub/Sub

Кратко: модель publish/subscribe в Redis — это простая система публикации сообщений по каналам, где издатели отправляют сообщения в канал, а подписчики получают их в реальном времени. При этом нет гарантии доставки и сообщений не сохраняются.

29/65
Redis Streams и Pub/Sub

Кратко: Redis Streams — структура данных для упорядоченного хранения событий (логов) с поддержкой чтения, повторного чтения и групп потребителей. Pub/Sub — механизм моментальной публикации/подписки для рассылки сообщений в реальном времени без хранения истории.

30/65
Lua-скрипты в Redis

Короткий ответ: Lua-скрипты выполняются внутри сервера Redis в одном потоке и исполняются атомарно: весь скрипт выполняется как единая операция, блокируя обработку других команд. Скрипты обращаются к Redis через redis.call или redis.pcall, принимают ключи через KEYS и дополнительные аргументы через ARGV. Обычно скрипты кешируются (SCRIPT LOAD) и вызываются по SHA1 (EVALSHA) для экономии трафика.

31/65
Очередь задач в Redis (LPUSH + BRPOP)

Как реализовать очередь задач на Redis с помощью списков и команд LPUSH и BRPOP?

32/65
Redis Pub/Sub vs Kafka и RabbitMQ

Чем Redis Pub/Sub отличается от Kafka или RabbitMQ?

33/65
consumer groups в Streams

Как работают consumer groups в Streams и что такое ack и pending messages?

34/65
Redis Streams и очереди

Как Redis Streams решают проблемы очередей?

35/65
Redis как очередь — проблемы и рекомендации

Кратко о проблемах при использовании Redis в роли очереди сообщений и способах их решения.

36/65
Почему Redis быстрый

Почему Redis быстрый, включая single-threaded модель и работу в памяти?

37/65
Превышение лимита памяти

Что происходит при превышении лимита памяти?

38/65
Политики выгрузки (LRU, LFU, TTL-based)

Какие eviction policy существуют (LRU, LFU, TTL-based) и как выбрать подходящую?

39/65
Как Redis обрабатывает параллельные запросы без блокировок?

Как Redis обрабатывает параллельные запросы без блокировок?

40/65
Redis: управление памятью, maxmemory и eviction policy

Как Redis управляет памятью, включая maxmemory и политики вытеснения (eviction)?

41/65
Медленные операции Redis

Вопрос: Какие операции в Redis могут быть медленными и почему (например, KEYS)?

42/65
Проблемы консистентности при репликации (eventual consistency)

Какие проблемы консистентности возникают при репликации (eventual consistency)?

43/65
master-replica репликация в Redis

Краткое объяснение работы master-replica репликации в Redis — как мастер передаёт данные репликам и как происходит синхронизация.

44/65
Redis Sentinel

Что такое Redis Sentinel и какую проблему он решает?

45/65
Failover и выбор мастера

Что происходит при failover и как выбирается новый мастер?

46/65
Sentinel vs Cluster

В чем разница между Sentinel и Cluster?

47/65
Ручной шардинг

Какие проблемы возникают при ручном шардинге?

48/65
Ограничения Redis Cluster (multi-key операции, транзакции)

Какие ограничения Redis Cluster (multi-key операции, транзакции)?

49/65
Redis Cluster — как работает (sharding по слотам)

Как работает Redis Cluster, включая sharding по слотам?

50/65
Горизонтальное масштабирование Redis (sharding и partitioning)

Как масштабируется Redis горизонтально, включая sharding и partitioning?

51/65
Проблемы у Redis-lock (например, split-brain)

Какие проблемы есть у Redis-lock (например, split-brain)?

52/65
Session storage в Redis

Как реализовать хранение сессий в Redis для веб-приложения.

53/65
Distributed lock в Redis (SET NX + EX)

Как реализовать distributed lock в Redis (SET NX + EX)?

54/65
Leaderboard (рейтинг) — Redis Sorted Set

Как реализовать leaderboard (рейтинг) с помощью sorted set?

55/65
Redis для rate limiting

Как использовать Redis для rate limiting, включая алгоритмы (token bucket, sliding window)?

56/65
Redlock — распределённая блокировка в Redis

Что такое Redlock и какие у него ограничения?

57/65
Проблемы при хранении слишком больших объектов

Какие проблемы возникают при хранении слишком больших объектов?

58/65
Почему нельзя использовать Redis как единственное хранилище без persistence?

Короткий ответ: без включённой persistence Redis хранит данные только в памяти — при сбое, перезапуске или переполнении памяти данные будут потеряны.

59/65
Анти‑паттерны при использовании Redis

Какие основные анти-паттерны при использовании Redis (например, KEYS в проде, отсутствие TTL)?

60/65
Redis для кэширования API

Как использовать Redis для кэширования API?

61/65
Когда выбирать Redis

Когда Redis — правильный выбор, включая caching, realtime и high-load сценарии?

62/65
Диагностика проблем производительности в Redis

Как диагностировать проблемы производительности в Redis?

63/65
Когда Redis — плохой выбор

Когда Redis — плохой выбор, включая необходимость сложных запросов и строгой консистентности?

64/65
Метрики Redis

Какие метрики важны для Redis (latency, memory usage, hit/miss ratio)?

65/65
WitSlice © 2026