Redis レプリケーションと Redis シャーディング (クラスター) の違い

StackOverflow https://stackoverflow.com/questions/2139443

  •  22-09-2019
  •  | 
  •  

質問

  1. Redis レプリケーションと Redis シャーディングの違いを知っている人はいますか?
  2. それらは何に使われるのでしょうか?Redis はデータをメモリに保存しますが、これはレプリケーション/シャーディングにどのような影響を与えますか?
  3. 両方を併用することは可能ですか?

ありがとう!

役に立ちましたか?

解決

彼らはよく一緒に直交する概念と作業しているもののシャーディングは、ほとんどの複製のアンチテーゼである。

また、パーティショニングとして知られている

シャーディングは、分割キーによってデータをバックアップです。複製は、また、ミラーリングと知っているが、すべてのデータをコピーすることです。

シャーディングは、いずれかのリソース上のヒットとメモリ負荷を低減、パフォーマンスを向上するのに便利です。レプリケーションは、読み込みの高可用性を実現するために有用です。あなたが複数のレプリカから読み取る場合は、すべてのリソース上のヒット率が低下しますが、すべてのリソースのメモリ要件は同じまま。あなたがスレーブに書き込むことができますが、複製がマスター - >スレーブのみであることに留意すべきです。あなたができるようにしないスケールはこの方法を書き込みます。

次のタプルを持っていると仮定します[1:アップル]、[2:バナナ]、[3:チェリー]、[4:ドリアン]と我々は二台のマシンAとBとのシャーディングを持っているが、私たちは鍵を保存可能性がある2 、機械Aに4。そして、マシンBでのレプリケーションのキー1,3は、我々はマシンAとマシンB上の1,2,3,4のキー1,2,3,4を格納します。

シャーディングは、典型的には、キー時一貫したハッシュを実行することによって実現されます。

:上記の例は、以下のハッシュ関数h(x)は{?BリターンX%2 == 0 A}を用いて実施しました。

概念を結合するには、我々は各シャードを複製することがあります。上記のケースでは、マシンAのデータ(2,4)の全ては、機械Cに複製することができ、マシンBのデータ(1,3)の全ては、マシンD上に複製することができた。

任意のキーと値のストア(Redisのは一例となっている)特定の十字キーの機能がもはや動作するものの支持体は、シャーディング。 Redisのサポートは、箱から出しレプリケーションます。

他のヒント

は簡単な言葉では、二つの概念の基本的な違いは、複製がスケールに読み取りに使用されている間シャーディングは、スケールへの書き込みに使用されることです。アレックスは、すでに述べたように、レプリケーションにもHAを達成するためのソリューションの1つです。

あなたは破片は、クラスタ内のノード間で複製することができる方法を検討する場合は、

はい、彼らは両方とも一般的に一緒に使用されます。

代わりにRAM-フラッシュオプションのあなたの3番目の質問については、と、Redisの追加のみファイル(AOF)を使用するには良いアイデアです。 (書き込み速度の面で)わずかなコストで、あなたはあなたの書き込みの多くの信頼を得ます。これはかなりのMySQLバイナリログのようなものです。 1のfsync /秒を使用することをお勧めのオプションです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top