実装(x)でわかるように、RedisはPub /Subコンテキストでメッセージをメモリに保持しません:
- メッセージは、そのチャネルをリッスンしているクライアント(存在する場合)に送信されます。
- メッセージは、一致するチャネル(存在する場合)をリッスンしているクライアントに送信されます。
次に、Redisは、メッセージを受信したクライアントの数を返すだけです(たとえば、複数のパターンが一致する場合、クライアントが1つのメッセージを複数回受信する可能性があることに注意してください)。
サブスクライブされているクライアントがない場合、Redisは単に0を返し、メッセージは記録/バッファリングされません:
> publish foo test
(integer) 0
(x)基本的に、Redisはサブスクライブされたクライアントのリストをループし、メッセージとともに応答を送信します。