Scratch
@Scratch

Как быстро выбрать всех фолловеров юзера на текущем сервере?

Привет!
Есть несколько Asp.Net Web.Api серверов, у каждого из которых свои залогиненные пользователи, которые могут фолловить друг друга. Рядом с каждым же сервером стоит свой Redis, в котором лежат профили залогиненных пользователей (возможно, не всех) и еще рядом с каждым редисом есть по воркеру, который получает по рэббиту задания на обновление кешиков, лежащих в данном редисе.

В монге у каждого пользователя хранится полная инфа по которой можно построить сущность в редисе, на случай если ее там нет. Но лазить туда каждый раз не хочется.

Итак, у какого то пользователя есть миллион фолловеров и он решил чего-то там сделать, что должно появиться у всех залогиненных фоловеров в фиде. Когда воркер получает таск, ему нужно либо
  • Пройти по всем сущностям в редисе и посмотреть там, есть ли у каждой в друзьях чел, который сгенерил событие. Если таких на данном сервере 50-100 000, то это долговато
  • Достать из монги список фолловеров и посчитать пересечение с данными из редиса. Это тоже медленно, т.к. одних айдишек будет мегабайт 16


И так и так получается медленно. Может в редисе есть возможность быстро найти те сущности, у которых какое то поле равно заданному? Нужны идеи
  • Вопрос задан
  • 307 просмотров
Пригласить эксперта
Ответы на вопрос 1
@AdvanTiSS
Если читать из монги список фоловеров долго, тогда добавьте кэш списков в редис.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
23 нояб. 2024, в 01:31
1000 руб./за проект
23 нояб. 2024, в 00:16
2000 руб./за проект
22 нояб. 2024, в 23:55
3000 руб./за проект