Redis (1 マスター、1 スレーブ) のマスター/スレーブ デプロイと、Publish-Subscribe を管理するクライアント (webapp) があると仮定します。
- メッセージをスレーブにパブリッシュできますか? また、メッセージはマスターに「表示」されますか?
- それとも、パブリッシュ コマンドにはマスターを使用し、サブスクライブ コマンドにはスレーブのみを使用する必要がありますか?
私は周りを見回してきましたが、答えを見つけることができませんでした。誰でも知っていますか?
Redis (1 マスター、1 スレーブ) のマスター/スレーブ デプロイと、Publish-Subscribe を管理するクライアント (webapp) があると仮定します。
私は周りを見回してきましたが、答えを見つけることができませんでした。誰でも知っていますか?
編集: @jameshfisher が指摘したように、以下のリンクはRedis Cluster
. @lionello からのコメントは正しい答えのようです。
スレーブへのパブリッシュは、マスターには伝達されません。その逆のみです。
答えはクラスター仕様のドキュメントにあります:
パブリッシュ/サブスクライブ
Redis クラスターでは、クライアントはすべてのノードにサブスクライブでき、他のすべてのノードにパブリッシュすることもできます。クラスターは、パブリッシュされたメッセージが必要に応じて転送されるようにします。現在の実装では、パブリッシュされた各メッセージを他のすべてのノードにブロードキャストするだけですが、ある時点でこれはブルーム フィルターまたは他のアルゴリズムを使用して最適化される予定です。
Redis に保存する一般的なデータについては、マスターにのみ書き込む必要があります。
http://redis.io/topics/replicationから:
...スレーブとマスターが再同期する場合、またはスレーブが再起動される場合、[スレーブへの]書き込みは破棄されます...
実際、v2.6 からはslave-read-only
、スレーブにデータを書き込むミスを防止するモードにスレーブを配置できます。
ドキュメントには、スレーブにデータを書き込むための潜在的なユースケースについて言及されています。
...多くの場合、スレーブに保存できる重要でない一時的なデータがあります。たとえば、クライアントは、スレーブ インスタンス内のマスターの到達可能性に関する情報を取得して、フェイルオーバー戦略を調整する場合があります。