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 в продакшене.

Перед началом обучения вы можете пройти тест, чтобы выявить пропущенные знания.

Пройти тест

Вы можете начать изучение этого набора. Вам будет отправлено 260 сообщений для повторения каждой карточки несколько раз в соответствие с кривой забывания.

Узнайте больше о методе интервального повторения.

Запланируйте ежедневные повторения карточек на случай если вам нужно запомнить за короткий срок или довести эти знания до автоматического уровня.

Узнайте больше о ежедневных практиках.
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