Redis レプリケーションと Redis シャーディング (クラスター) の違い
-
22-09-2019 - |
質問
- Redis レプリケーションと Redis シャーディングの違いを知っている人はいますか?
- それらは何に使われるのでしょうか?Redis はデータをメモリに保存しますが、これはレプリケーション/シャーディングにどのような影響を与えますか?
- 両方を併用することは可能ですか?
ありがとう!
解決
彼らはよく一緒に直交する概念と作業しているもののシャーディングは、ほとんどの複製のアンチテーゼである。
また、パーティショニングとして知られているシャーディングは、分割キーによってデータをバックアップです。複製は、また、ミラーリングと知っているが、すべてのデータをコピーすることです。
シャーディングは、いずれかのリソース上のヒットとメモリ負荷を低減、パフォーマンスを向上するのに便利です。レプリケーションは、読み込みの高可用性を実現するために有用です。あなたが複数のレプリカから読み取る場合は、すべてのリソース上のヒット率が低下しますが、すべてのリソースのメモリ要件は同じまま。あなたがスレーブに書き込むことができますが、複製がマスター - >スレーブのみであることに留意すべきです。あなたができるようにしないスケールはこの方法を書き込みます。
次のタプルを持っていると仮定します[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 /秒を使用することをお勧めのオプションです。