問題タブ [redis-cluster]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - Redis クラスター モードでの StackExchange.Redis の使用法は何ですか?
これは、stackexchange.redis v1.1.603、.net 4.6、コンソール アプリケーションを使用しています。これが私のコードです:
「MOVED: 12586[192.168.1.20:30003]」というメッセージを常に表示します。
公式文書やインターネットを調べても、正しい答えが見つかりません。redis-cli を使用している間は問題ありません。
これを修正するには?コードで例外を処理する必要がありますか?その場合、どのように?
redis - redis クラスター dbsize は、そのノードでのみキーを表示します
を使用してredisクラスターノードに接続しています
redis-cli -c -p 7001
infoコマンドまたはdbsizeコマンドを発行すると、クラスター内のすべてのノードにわたるすべてのキーの数ではなく、そのノードにのみ存在するキーの数が取得されます。ただし、このノードに存在しないキーを要求すると、そのノードからキーが取得されます。keys * が利用可能なすべてのノードからすべてのキーを生成するようにしたい場合はどうすればよいですか?
redis - ハード障害が発生した場合に、redis クラスター内の特定のノードのハッシュ スロットを再開する方法は?
そのため、redis クラスターをテストしています。3 つのマスターと 3 つのスレーブのセットアップがあります。これで、ノードがハード障害 (マスターとスレーブの両方がダウン) に直面した場合でも、クラスターは引き続き機能し、障害が発生したノードによって提供されるハッシュ スロットを除外します。現在、このようなシナリオをテストしているときに、これらのハッシュ スロットによって提供されるキーを操作する読み取り/書き込みが例外で失敗することがわかりましたが、これは問題ありません (私は jedis を使用しています)。ただし、redis クラスターをキャッシュとして使用している場合は、これらのハッシュ スロットを他のノードで提供したいと考えています。redis-trib
この機能は、ユーティリティには存在しないようです。
./redis-trib.rb reshard
で失敗するため、クラスターをリシャーディングしてこれらのハッシュ スロットを移動することはできません[ERR] Not all #{ClusterHashSlots} slots are covered by nodes.
。./redis-trib.rb del-node
で失敗するため、クラスターからノードを削除することもできません[ERR] Node #{node} is not empty! Reshard data away and try again.
。元のノードを立ち上げることができないが、それらのハッシュスロットを他のノードで提供したいというシナリオに対処するための最良の方法は何ですか (古いノードでデータを失っても問題ないと仮定して)? 理想的には、そのノードを削除できるようなものです (クラスターからマスターとスレーブを削除し、それらのハッシュ スロットを他のノードに割り当てます)。
redis - redis 2.8 によって生成された dump.rdb を使用して redis 3.2 を起動する方法
redis サーバー バージョン 2.8.22 を使用して dump.rdb を作成しました。redis サーバー 3.2 の起動時には無視されます。Redis 3.2 のデータ形式はバージョン 2.8.22 と下位互換性がありますか?
python-3.x - ネットワーク ケーブルを切断し、ReDiS クラスターのマスターをそのクラスターの ReDiS スレーブから分割した場合、マスターの数が 2 倍になったらどうすればよいですか?
より具体的には、私がネットワーク ケーブルにつまずいて、ReDiS クラスターのマスターをそのクラスターの ReDiS スレーブから分割したとしましょう。マスターの数が 2 倍になった場合、クライアントが分割前の「最初の」マスターにのみ書き込むようにすることはできますか?
たとえば、次のプロパティを持つクラスターがあり、サブネット 192.168. 53 .* および 192.168. 105 .* 最終的に 6 人のマスターが必要ですか?
192.168 の ReDiS 1。53.1 :7000 (マスター)
192.168 の ReDiS 2。53.1 :7001 (マスター)
192.168 の ReDiS 3。53.1 :7002 (マスター)
192.168 の ReDiS 4。105.2 :7000 (スレーブ)
192.168 の ReDiS 5。105.2 :7001 (スレーブ)
192.168 の ReDiS 6。105.2 :7002 (スレーブ)
私は、ReDiS 4、ReDiS 5、および ReDiS 6 がすぐにマスターになり、最終的には次のようになると推測しています。
192.168 の ReDiS 1。53.1 :7000 (マスター)
192.168 の ReDiS 2。53.1 :7001 (マスター)
192.168 の ReDiS 3。53.1 :7002 (マスター) =======
//Snapped Cable//========
ReDiS 4 on 192.168. 105.2 :7000 (マスター)
ReDiS 5 on 192.168. 105.2 :7001 (マスター)
ReDiS 6 on 192.168. 105.2 :7002 (マスター)
また、断線したケーブルを交換すると、またこうなってしまいますよね?
192.168 の ReDiS 1。53.1 :7000 (マスター)
192.168 の ReDiS 2。53.1 :7001 (マスター)
192.168 の ReDiS 3。53.1 :7002 (マスター)
192.168 の ReDiS 4。105.2 :7000 (スレーブ)
192.168 の ReDiS 5。105.2 :7001 (スレーブ)
192.168 の ReDiS 6。105.2 :7002 (スレーブ)
マスターが「あるべき」ものであることを認識するようにクライアントに書き込み、192.168.1 のマスターにのみ書き込むようにするのは賢明ですか。53 .*?
このシナリオの問題を軽減する例として、次の変数を、のメンバーによって表される ReDiS の 1 つがfirstThreeMasters
スレーブになったときにのみ更新するようにできますか?
(私のクライアント コードの動作がこの質問の主題ですが、これは serverfault.com に属していると思いますか?コメントでアドバイスするか、移動することをお勧めします。)