Redis usa un dict
, la stessa struttura delle chiavi, per archiviare le iscrizioni ai canali, sia per client che per tutti i client (mantiene un hash per sottoscrizione con un elenco di client iscritti), quindi è fino a 2^32 iscrizioni ai canali in totale.
Utilizza un elenco per archiviare le sottoscrizioni dei modelli per client, quindi è teoricamente limitato solo dalla memoria del nodo disponibile.
Tuttavia, in generale, puoi avere infiniti canali. Pensa a un canale come a un'etichetta quando viene pubblicato un messaggio. I messaggi non vengono mai archiviati. Quando il messaggio viene pubblicato, Redis cercherà i client iscritti a quel canale e verificherà ogni abbonamento al modello. Il canale esiste davvero solo durante la pubblicazione del messaggio.
Poiché ci sono abbonamenti a pattern, ci sono canali "logici" illimitati.
Solo nelle notifiche di eventi abbiamo 2^32 * database * tipi di eventi chiave possibili canali "logici".
Per quanto riguarda il numero di iscritti e publisher, è limitato da maxclients
impostazione, 10.000 per impostazione predefinita. Non ci sono limiti per abbonati ed editori, ma si applica il limite massimo di client (connessioni).
Come indicato da @Roman, ci sono limitazioni del buffer, ma questo si riferisce principalmente al throughput (elaborazione dei messaggi).