System Design - Проектируем свой Redis
Матвей Попов
0:00 / 0:00
System Design - Проектируем свой Redis
24 669 просмотров · 10 дней назад
Матвей Попов
2,12 тыс. подписчиков
24 669 просмотров · 10 дней назад
Redis кажется простой системой: положить значение по ключу и быстро его вернуть. Но когда нужно хранить 1 ТБ данных и обрабатывать 100 000 RPS,, обычная хэш-таблица превращается в сложную распределённую систему.
Разбираем, как спроектировать собственный Redis: от Get, Set и TTL до шардирования, репликации и продакшн-оптимизаций.
В этом видео:
— Три функциональных требования: Get/Set/Delete, TTL и вытеснение по LRU
— Как реализовать точный LRU через HashMap и двусвязный список
— Почему настоящий Redis использует приближённый LRU вместо классического алгоритма
— Почему шардироваться заставляет память, а не 100 000 RPS
— Где хранить топологию кластера: умный клиент, прокси, редиректы или Gossip
— Consistent Hashing против Hash Slots
— Репликация, выбор нового мастера и компромисс между скоростью и консистентностью
— Горячие ключи на чтение и запись: локальный кэш, реплики, батчинг и Write-Behind
— Откуда берётся скорость Redis: Event Loop, атомарность, Pipelining и RESP
— Что убивает latency: тяжёлые команды, большие ключи, синхронное удаление и фрагментация памяти
━━━ Таймкоды ━━━
00:00 Введение
04:19 Реализуем Get, Set, Delete
05:42 Реализуем TTL
08:11 Реализуем LRU
12:07 Как LRU устроен в Redis
14:22 Масштабирование и шардирование
22:41 Распределение ключей по нодам
28:18 Отказоустойчивость и репликация
34:05 Горячие ключи
40:31 Оптимизация производительности
50:00 Заключение
━━━━━━━━━━━━
#systemdesign #highload #redis #backend #архитектура