15

Redis は、組み込みのレプリケーションと驚異的な速度を備えた優れた製品のようです。試してみると、2010 年の memcached の置き換えのように感じられます。

ただし、通常 memcached を使用する場合は、プール内のサーバー間でデータを均等に分散するために一貫したハッシュが使用されます。プール内のサーバーの 1 つがダウンしてアクセスできなくなった場合、それは透過的に処理され、失われたキーのみが再作成され、プール内の残りの使用可能なサーバーに均等に分散されます。

一方、Redis には組み込みのシャーディングもありますが、自動レプリケーションと呼ばれる別の非常に興味深い機能もあります。そのおかげで、たわごとがファンに当たった場合に使用するスレーブサーバーを利用しながら、データの可用性を大幅に高めることができました.

ただし、 redis サーバーのステータスをスレーブとして変更して自動的に新しいマスターにするか、Redis でフェールオーバーを自動的に処理する他の方法で処理する良い解決策をまだ見つけていません。

これはどのように行うことができますか?これに対する適切なアプローチは何でしょうか?

4

1 に答える 1

21

ただし、通常 memcached を使用する場合は、プール内のサーバー間でデータを均等に分散するために一貫したハッシュが使用されます。プール内のサーバーの 1 つがダウンしてアクセスできなくなった場合、それは透過的に処理され、失われたキーのみが再作成され、プール内の残りの使用可能なサーバーに均等に分散されます。

これは memcached が行うことではなく、クライアント ライブラリがすべてこの魔法を行っています ;)

ただし、redis サーバーのステータスをスレーブとして変更して自動的に新しいマスターになるか、Redis でフェイルオーバーを自動的に処理するための適切な解決策をまだ見つけていません。

SlaveofCommandを使用して特性を変更します。自動フェイルオーバーにはもう少しコーディングが必要です。サーバーに接続し、接続が失われ、しばらく再確立できない場合は、1 つのスレーブをマスターとして選択し、他のすべてのサーバーのスレーブマスターステータスを変更します。

更新 (2012 年 8 月 1 日):バージョン 2.4.16 以降の監視および自動フェイルオーバー ソリューションであるredis sentinelが追加されました。

于 2010-06-27T19:20:43.213 に答える