Войти Регистрация
Data base

132. Связь «фото → автор» в хеше-бакете

Лёгкая

Redis · Redis 7.4.11

Instagram нужно было по id фото быстро найти автора — 300 млн пар. Ключ на каждое фото стоил около 70 МБ на миллион записей, то есть ~21 ГБ. Команда разложила пары по хешам: ключ хеша — id фото, делённый нацело на 1000, поле — полный id. Хеш до 1000 полей хранится компактно, и всё уместилось меньше чем в 5 ГБ.

Фото 1155315 загрузил пользователь 939. Запишите пару в нужный бакет (mediabucket:<id div 1000>) и последней командой верните, сколько связей теперь в этом бакете.

В работе: Справочники «id → значение» на сотни миллионов строк: шард пользователя, автор фото, регион телефона.

Как проверяем Движка Redis в браузере пока нет, поэтому здесь не запрос, а выбор решения. Выберите один вариант. После ответа — почему каждый вариант верный или нет. Ответ один на подход: после него показываем разбор.
хешиHSETHLENэкономия памяти

Источник: кейс Instagram Engineering: 300 млн пар в Redis, 2012. Условие пересказано своими словами.

Давали на собеседовании? Ответов пока мало — ваш поможет.

Какая последовательность команд запишет пару и вернёт число связей в бакете?

  • HSET в mediabucket:1155, затем HLEN
  • Бакет по полному id
  • Бакет с округлением вверх
  • Отдельный ключ и DBSIZE