sql >> Databasteknik >  >> NoSQL >> Redis

Redis pub sub max prenumeranter och förlag

Redis använder ett dict , samma struktur som för nycklar, för att lagra kanalprenumerationer, både per klient och för alla klienter (behåller en hash per prenumeration med en lista över kunder som prenumererar), så det är upp till 2^32 kanalprenumerationer totalt.

Den använder en lista för att lagra mönsterabonnemang per klient, så den begränsas teoretiskt endast av tillgängligt nodminne.

Men i allmänhet kan du ha oändliga kanaler. Se en kanal som en etikett när ett meddelande publiceras. Meddelanden lagras aldrig. När meddelandet publiceras kommer Redis att leta efter kunderna som prenumererar på den kanalen och testa för varje mönsterprenumeration. Kanalen existerar egentligen bara medan meddelandet publiceras.

Eftersom det finns mönsterprenumerationer finns det obegränsade "logiska" kanaler.

Bara i händelseaviseringar har vi 2^32 * databaser * nyckelhändelsetyper möjliga "logiska" kanaler.

När det gäller antalet prenumeranter och utgivare är det begränsat av maxclients inställning, 10 000 som standard. Det finns ingen begränsning för prenumeranter och utgivare, men maxgränsen för klienter (anslutningar) gäller.

Som indikerat av @Roman finns det buffertbegränsningar, men detta hänvisar mest till genomströmning (meddelandebehandling).



  1. Skydda dina data med ClusterControl

  2. Vad är det korrekta sättet att hantera Redis-anslutning i Tornado? (Async - Pub/Sub)

  3. Vad är skillnaden mellan replaceOne() och updateOne() i MongoDB?

  4. MongoDB sammanfogar data inuti en array av objekt