Redis · Redis 7.4.11
Instagram нужно было по id фото быстро найти автора — 300 млн пар. Ключ на каждое фото стоил около 70 МБ на миллион записей, то есть ~21 ГБ. Команда разложила пары по хешам: ключ хеша — id фото, делённый нацело на 1000, поле — полный id. Хеш до 1000 полей хранится компактно, и всё уместилось меньше чем в 5 ГБ.
Фото 1155315 загрузил пользователь 939. Запишите пару в нужный бакет (mediabucket:<id div 1000>) и последней командой верните, сколько связей теперь в этом бакете.
В работе: Справочники «id → значение» на сотни миллионов строк: шард пользователя, автор фото, регион телефона.
Источник: кейс Instagram Engineering: 300 млн пар в Redis, 2012. Условие пересказано своими словами.
Какая последовательность команд запишет пару и вернёт число связей в бакете?
- HSET в mediabucket:1155, затем HLEN
- Бакет по полному id
- Бакет с округлением вверх
- Отдельный ключ и DBSIZE