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).