Redisはdict
を使用します 、キーの場合と同じ構造体で、クライアントごととすべてのクライアントの両方のチャネルサブスクリプションを保存します(サブスクライブされたクライアントのリストを含むサブスクリプションごとのハッシュを保持します)。したがって、合計で最大2^32のチャネルサブスクリプションになります。
リストを使用してクライアントごとのパターンサブスクリプションを保存するため、理論的には使用可能なノードメモリによってのみ制限されます。
ただし、一般的に、無限のチャネルを持つことができます。メッセージが公開されるときのラベルとしてチャネルを考えてください。メッセージが保存されることはありません。メッセージが公開されると、Redisはそのチャネルにサブスクライブしているクライアントを探し、すべてのパターンサブスクリプションをテストします。チャネルは、メッセージが公開されている間だけ実際に存在します。
パターンサブスクリプションがあるため、無制限の「論理」チャネルがあります。
イベント通知だけで、2 ^32*データベース*主要なイベントタイプの可能な「論理」チャネルがあります。
サブスクライバーとパブリッシャーの数に関しては、maxclients
によって制限されます 設定、デフォルトでは10,000。サブスクライバーとパブリッシャーに制限はありませんが、クライアント(接続)の最大制限が適用されます。
@Romanで示されているように、バッファの制限がありますが、これは主にスループット(メッセージ処理)を指します。