Как работает механизм подписки Redis PubSub? - PullRequest
0 голосов
/ 14 января 2019

Я хочу создать инфраструктуру публикации-подписки, в которой каждый подписчик будет прослушивать несколько (скажем, 100 тыс.) Каналов.

Я думаю использовать Redis PubSub для этой цели, но я не уверен, что подписка на тысячи каналов - лучшая практика здесь. Чтобы ответить на этот вопрос, я хочу знать, как механизм подписки в Redis работает в фоновом режиме.

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

Любая другая идея?

1 Ответ

0 голосов
/ 17 января 2019

Сальваторе / создатель Redis ответил на этот вопрос: https://groups.google.com/forum/#!topic/redis-db/R09u__3Jzfk

All the complexity on the end is on the PUBLISH command, that performs
an amount of work that is proportional to:

a) The number of clients receiving the message.
b) The number of clients subscribed to a pattern, even if they'll not
match the message.

This means that if you have N clients subscribed to 100000 different
channels, everything will be super fast.

If you have instead 10000 clients subscribed to the same channel,
PUBLISH commands against this channel will be slow, and take maybe a
few milliseconds (not sure about the actual time taken). Since we have
to send the same message to everybody.
...