Redis использует dict
, ту же структуру, что и для ключей, для хранения подписок на каналы, как для клиента, так и для всех клиентов (для каждой подписки хранится га sh со списком подписанных клиентов), поэтому он работает до 2 ^ 32 каналов подписки в общей сложности.
В нем используется список для хранения подписок шаблонов для каждого клиента, поэтому теоретически он ограничен только доступной памятью узла.
Однако, как правило, вы можете иметь бесконечные каналы. Думайте о канале как о ярлыке при публикации сообщения. Сообщения никогда не сохраняются. Когда сообщение публикуется, Redis будет искать клиентов, подписанных на этот канал, и проверять каждую подписку шаблона. Канал действительно существует только во время публикации сообщения.
Поскольку существуют шаблоны подписок, существует неограниченное количество «логических» каналов.
Только в уведомлениях о событиях у нас есть 2 ^ 32 * базы данных * ключевые типы возможных событий 'логические ' каналы.
Что касается количества подписчиков и издателей, оно ограничено параметром maxclients
, по умолчанию 10 000. Нет никаких ограничений для подписчиков и издателей, но применяется максимальное ограничение клиентов (соединений).
Как указано @Roman, существуют ограничения буфера , но это относится в основном к пропускной способности (сообщение обработка). * * тысяча двадцать-один