Pub/Subは同期通信です。通信できるようにするには、すべての関係者が同時にアクティブである必要があります。ここで、Redisは純粋な同期メッセージングブローカーです。
最初の3つの質問に対する答えはノーです。ディスクでもメモリでも、メッセージの永続性はありません。メッセージが公開されると、そのメッセージは現在サブスクライブされているクライアント接続に送信されます。 PUBLISHコマンドは、メッセージを受信したクライアントの数をすぐに返します。O(N + M)ここで、Nは受信チャネルにサブスクライブされたクライアントの数、Mは(任意のクライアントによって)サブスクライブされたパターンの総数です。
...しかし、ダウンして再接続すると、オンラインに戻ったときにトピックが配信されることに気づいています
R/「私はダウンしています」とはどういう意味かによると思います "。メッセージはキャッシュされている必要があります クライアントのどこかに。または、Redisサーバーのクライアント接続がまだ有効で、メッセージがクライアント出力バッファーにあった可能性があります。
このリソースが役立つ場合があります:
Redis Pub /SubとRedisStreamの主な違いは何ですか?
パブ/サブ