Azure Redis Cacheのチームメンバーからの回答であるthisによれば、Azure Redis Cacheは単一のエンドポイントを公開します。そのエンドポイントは、自動的にマスターノードまたはスレーブノードのいずれかにルーティングされます(フェイルオーバーしたと仮定します)。Azure Redis Cache - 複製されたインスタンスに対して正しく動作する方法
Azureの...は、クライアントが単一のエンドポイントを参照し、いつかチェックする必要がありますので、ノードが
実際にマスタまたはスレーブ
であることを保証するために、クライアント側のチェックが必要です。その答えはまた、と述べていますRedisクライアントは、マスターノードまたはスレーブノードのどちらに通話するかを気にする必要がありますか。フェールオーバー時の矛盾を防ぐことのみが目的ですか、それとも他の問題がありますか?
クライアントがマスターインスタンスに接続されているかスレーブインスタンスに接続されているかをクライアントが確認する必要がありますか?
info replication
を実行していますか? docsから
これは、クライアントがスレーブインスタンスに接続していることを知る手段がないことを意味します。さらに、スレーブが昇格される前にいくつかの書き込みを受け取っていない場合、フェールオーバーの間またはその後に一貫性の問題が発生することはありませんか? – Malt
これも私自身の解釈ですが、これはおそらくすべてがまだ適用されています - https://redis.io/topics/replication。これは、マスター/スレーブが一貫性を達成するために最善を尽くしますが、保証されていないことを意味します結局データベースではない)。マイクロソフトがダンスを改善するために帽子から余分なウサギを引っ張っているならば、彼らだけがこれに答えることができる。 – evilSnobu
ポート6379/6380を介してAzure Redisに接続すると、クラスタ化されていないキャッシュ内のマスターノードが常にポイントされます。フェールオーバーが発生すると、システムは自動的にすべての接続をフェールオーバー後の新しいマスターノードに再ルーティングします。レプリケーションは非同期であるため、スレーブにまだレプリケートされていない書き込みはすべて失われます。標準のRedisの動作であり、Azure Redisに固有の動作ではありません。クラスタ化されたキャッシュの場合は、動作が少し異なります。クラスタ構成は初期接続でダウンロードされ、クライアントはクラスタ内のすべてのノードに直接接続します。 – JonCole