Redis
 sql >> Datenbank >  >> NoSQL >> Redis

Redis Pub Sub-Max-Abonnenten und -Publisher

Redis verwendet ein dict , dieselbe Struktur wie für Schlüssel, zum Speichern von Kanalabonnements, sowohl pro Client als auch für alle Clients (hält einen Hash pro Abonnement mit einer Liste der abonnierten Clients), sodass es insgesamt bis zu 2^32 Kanalabonnements sind.

Es verwendet eine Liste, um Musterabonnements pro Client zu speichern, daher ist es theoretisch nur durch den verfügbaren Knotenspeicher begrenzt.

Im Allgemeinen können Sie jedoch unendlich viele Kanäle haben. Stellen Sie sich einen Kanal als Label vor, wenn eine Nachricht veröffentlicht wird. Nachrichten werden niemals gespeichert. Wenn die Nachricht veröffentlicht wird, sucht Redis nach den Clients, die diesen Kanal abonniert haben, und testet auf jedes Musterabonnement. Der Kanal existiert wirklich nur, während die Nachricht veröffentlicht wird.

Da es Pattern-Abonnements gibt, gibt es unbegrenzte „logische“ Kanäle.

Allein in den Ereignisbenachrichtigungen haben wir 2^32 * Datenbanken * wichtige Ereignistypen möglicher "logischer" Kanäle.

Hinsichtlich der Anzahl der Abonnenten und Herausgeber wird sie durch die maxclients begrenzt Einstellung, standardmäßig 10.000. Es gibt keine Beschränkung für Abonnenten und Herausgeber, aber es gilt die maximale Anzahl an Clients (Verbindungen).

Wie von @Roman angegeben, gibt es Pufferbeschränkungen, aber dies bezieht sich hauptsächlich auf den Durchsatz (Nachrichtenverarbeitung).