Redis クラスター構築に関する初心者向けチュートリアル
redis クラスターの構築
(学習ビデオ共有: redis ビデオ チュートリアル)
正式な内容を紹介する前に, まずはスタンドアロン版のredisを構築する手順を紹介します。
- redis 圧縮パッケージをダウンロードし、圧縮ファイルを解凍します;
- 解凍された redis ファイル ディレクトリに入力し (この時点で Makefile ファイルが表示されます)、redis をコンパイルしますソース ファイル;
- コンパイルされた redis ソース ファイルを /usr/local/redis ディレクトリにインストールします。/local ディレクトリに redis ディレクトリがない場合は、新しい redis ディレクトリが自動的に作成されます。
- /usr/local/redis/bin ディレクトリに入り、./redis-server で redis を直接起動します (この時点では redis はフロントエンドで起動します);
- redis の起動モードをバックエンド起動に変更します。具体的な方法は、解凍した redis ファイルの下に redis を置き、.conf ファイルを /usr/local/redis/bin ディレクトリにコピーし、redis.conf ファイルを変更します -> daemonize: no to daemonize: yse;
- /bin ディレクトリに ./redis を渡す -server redis.conf で redis が開始されます (この時点ではバックグラウンドで起動します)。
以上で、redis スタンドアロン版のインストールと起動が完了しました。
画像付きの詳細な手順については、「-> redis の概要」を参照してください。
冗長になっていることをお許しください。わかりました。redis クラスターの構築というトピックに戻りましょう。
1. Redis クラスターの概要
- redis は、インターネットで愛用されているオープン ソースのキー値ストレージ システムです。会社の好意。 redis3.0 バージョンより前は、シングルトン モードのみがサポートされ、バージョン 3.0 以降ではクラスターのみがサポートされていました。ここでは redis3.0.0 バージョンを使用しています。
- redis クラスターは P2P モードを採用しており、完全に分散化されており、セントラル ノードまたはエージェント ノードがあります。
- Redis クラスターには統合された入り口がありません。クライアントがクラスターに接続するとき、クラスター内のどのノードにも接続できます。クラスター内のノードは、次のノードと通信します。 (PING-PONG メカニズム)、各ノードは Redis インスタンスです;
- クラスターの高可用性を実現するため、つまりノードが健全かどうか (正常に使用できるかどうか) を判断します。 、redis-cluster にはこのような投票フォールト トレランス メカニズムがあります。クラスター内のノードの半分以上がノードがダウンしていると投票した場合、このノードは失敗します。これは、ノードがダウンしているかどうかを判断する方法です;
- それでは、クラスタがダウンしているかどうかを判断するにはどうすればよいですか? -> クラスタ内のいずれかのノードがダウンしていて、そのノードにスレーブ ノード (バックアップ ノード) がない場合)、次にこれ クラスターがダウンしています。これは、クラスターがダウンしているかどうかを判断する方法です。
- では、いずれかのノードがハングアップすると (スレーブ ノードがない場合)、クラスターがハングアップするのはなぜでしょうか? -> クラスターには 16384 個の組み込みスロット (ハッシュ スロット) があり、すべての物理ノードがこれらの 16384[0-16383] スロットにマッピングされているか、これらのスロットが各ノードに均等に分散されているためです。データの一部 (キーと値) を Redis クラスターに保存する必要がある場合、Redis はまずキーに対して crc16 アルゴリズムを実行し、次に結果を取得します。次に、この結果の余りを 16384 まで計算します。この余りはスロット [0 ~ 16383] の 1 つに対応し、キーと値がどのノードに格納されているかを決定します。したがって、ノードがハングアップすると、そのノードに対応するスロットが使用できなくなり、クラスターが正常に動作しなくなります。
- 要約すると、各 Redis クラスターには理論的には最大 16,384 個のノードを含めることができます。
2. クラスター構築に必要な環境
2.1 投票フォールト トレランス メカニズムではノードの半分以上がそれを認識する必要があるため、Redis クラスターには少なくとも 3 つのノードが必要です。あるノードが故障しダウンしているため、2ノードでクラスタを構成できません。
2.2 クラスターの高可用性を確保するには、各ノードにスレーブ ノード、つまりバックアップ ノードが必要であるため、Redis クラスターには少なくとも 6 台のサーバーが必要です。それほど多くのサーバーがなく、それほど多くの仮想マシンを起動できないため、ここで構築するのは疑似分散クラスターです。つまり、1 つのサーバーで 6 つの Redis インスタンスを仮想的に実行し、ポート番号が変更されます。 (7001-7006) もちろん、実際の本番環境の Redis クラスターのセットアップはここと同じです。
2.3 Ruby のインストール
3. クラスターを構築するための具体的な手順は次のとおりです (ファイアウォールをオフにすることに注意してください)
3.1 usr/ に新しい redis-cluster ディレクトリを作成しますクラスターノードを保存するローカルディレクトリ
3.2 redis ディレクトリの下の bin ディレクトリにあるすべてのファイルを /usr/local/redis-cluster/redis01 ディレクトリにコピーします。ここにディレクトリがあれば、自動的に作成されます。操作コマンドは次のとおりです (現在のパスに注意してください):
cp -r redis/bin/ redis-cluster/redis01
3.3 redis01 ディレクトリ内のスナップショット ファイル dump.rdb を削除し、ディレクトリ内の redis.cnf ファイルを変更します 具体的には、ポート番号を 7001 に変更する、ともう 1 つは、クラスター作成モードでコメントを開くことです。以下の図に示すように:
dump.rdb ファイルを削除します。
ポート番号を 7001 に変更します。デフォルトは 6379
のコメントをオンにします。クラスターが有効なはい
3.4 redis-cluster/redis01 ファイルの 5 つのコピーを redis-cluster ディレクトリ (redis02-redis06) にコピーし、6 つの Redis インスタンスを作成し、Redis クラスターの 6 つのノードをシミュレートします。 。次に、残りの 5 つのファイルの下にある redis.conf のポート番号をそれぞれ 7002 ~ 7006 に変更します。以下の図に示すように:
redis02-06 ディレクトリを作成します
redis.conf ファイルのポート番号を 7002-7006# に変更します# 3.5 それでは起動 すべてのredisノードを一つずつ起動するのは面倒なので、redisノードを一括起動するためのスクリプトファイルを用意します コマンドはstart-all.sh ファイルの内容は以下の通りです:
cd redis01 ./redis-server redis.conf cd .. cd redis02 ./redis-server redis.conf cd .. cd redis03 ./redis-server redis.conf cd .. cd redis04 ./redis-server redis.conf cd .. cd redis05 ./redis-server redis.conf cd .. cd redis06 ./redis-server redis.conf cd ..
##3.7 start-all.sh スクリプトを実行して 6 つの Redis ノードを起動します
3.8 ok. これまでのところ、6 つの Redis ノードは正常に起動しています。 , クラスターが正式に開始されます。上記はすべて準備条件です。長く見えるので面倒だと思わないでください。実際、上記の手順は 6 つの Redis インスタンス (6 ノード) を作成して起動するという一文だけです。
クラスターを構築するには、redis 解凍ファイルのソース コードに含まれるツール (スクリプト ファイル) を使用する必要があります。このツールは Ruby スクリプト ファイルであるため、このツールの実行には、JVM 上で Java 言語を実行するのと同等の Ruby 実行環境が必要です。したがって、ruby をインストールする必要があります。手順は次のとおりです:
chmod +x start-all.sh
次に、ruby 関連のパッケージをサーバーにインストールする必要があります。ここでは redis-3.0.0.gem を使用しています。注意してください: redis と Ruby のバージョン パッケージのバージョンを一貫した状態に保つことが最善です。 Ruby パッケージをサーバーにインストールします。図に示すように、ダウンロードしてインストールする必要があります。
インストール コマンドは次のとおりです。
yum install ruby
3.9 前のステップで、ruby ツールに必要な実行環境と Ruby パッケージがインストールされました。次に、ruby スクリプト ツールをコピーする必要がありますusr/local/redis-cluster ディレクトリにコピーします。では、この Ruby スクリプト ツールはどこにあるのでしょうか?前述したように、redis 解凍ファイル、つまり redis/src ディレクトリ内の redis-trib.rb ファイルのソース コード内にあります。
3.10 Ruby ツール (redis-trib.rb) を redis-cluster ディレクトリにコピーします。手順は次のとおりです。スクリプト ファイルを使用する クラスターを構築する手順は次のとおりです。
gem install redis-3.0.0.gem
注: ここでは、独自のサーバー IP に基づいて、対応する IP アドレスを入力する必要があります。


yes を手動で入力する必要がある場所があります。
この時点で、Redi クラスターは正常に確立されています。テキストの最後の段落に注目してください。各ノードに割り当てられたスロット (ハッシュ スロット) が示されています。ここには合計 6 つのノードがあり、そのうち 3 つはスレーブ ノードであるため、3 つのマスター ノードは 0 ~ 5460、5461 にマップされます。 -10922、10933-16383ソルト。
redis01/redis-cli -p 7001 -c
注意:一定要加上-c,不然节点之间是无法自动跳转的!如下图可以看到,存储的数据(key-value)是均匀分配到不同的节点的:
四、结语
呼~~~长舒一口气…终于搭建好了Redis集群。
整个过程其实挺简单,本篇主要正对入门级别的小伙伴,插入了很多图片,所以显得冗长,希望大家多多理解,如果不当之处,还望及时指正~
最后,加上两条redis集群基本命令:
1.查看当前集群信息
cluster info
2.查看集群里有多少个节点
cluster nodes
相关推荐:redis数据库教程
以上がRedis クラスター構築に関する初心者向けチュートリアルの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Redisクラスターモードは、シャードを介してRedisインスタンスを複数のサーバーに展開し、スケーラビリティと可用性を向上させます。構造の手順は次のとおりです。異なるポートで奇妙なRedisインスタンスを作成します。 3つのセンチネルインスタンスを作成し、Redisインスタンスを監視し、フェールオーバーを監視します。 Sentinel構成ファイルを構成し、Redisインスタンス情報とフェールオーバー設定の監視を追加します。 Redisインスタンス構成ファイルを構成し、クラスターモードを有効にし、クラスター情報ファイルパスを指定します。各Redisインスタンスの情報を含むnodes.confファイルを作成します。クラスターを起動し、CREATEコマンドを実行してクラスターを作成し、レプリカの数を指定します。クラスターにログインしてクラスター情報コマンドを実行して、クラスターステータスを確認します。作る

Redis-Serverが見つからない問題を解決するための手順:インストールを確認して、Redisが正しくインストールされていることを確認します。環境変数Redis_hostとredis_portを設定します。 Redis Server Redis-Serverを起動します。サーバーがRedis-Cli pingを実行しているかどうかを確認します。

Redisはハッシュテーブルを使用してデータを保存し、文字列、リスト、ハッシュテーブル、コレクション、注文コレクションなどのデータ構造をサポートします。 Redisは、スナップショット(RDB)を介してデータを維持し、書き込み専用(AOF)メカニズムを追加します。 Redisは、マスタースレーブレプリケーションを使用して、データの可用性を向上させます。 Redisは、シングルスレッドイベントループを使用して接続とコマンドを処理して、データの原子性と一貫性を確保します。 Redisは、キーの有効期限を設定し、怠zyな削除メカニズムを使用して有効期限キーを削除します。

Redisのすべてのキーを表示するには、3つの方法があります。キーコマンドを使用して、指定されたパターンに一致するすべてのキーを返します。スキャンコマンドを使用してキーを繰り返し、キーのセットを返します。情報コマンドを使用して、キーの総数を取得します。

Redisバージョン番号を表示するには、次の3つの方法を使用できます。(1)情報コマンドを入力し、(2) - versionオプションでサーバーを起動し、(3)構成ファイルを表示します。

Redisソースコードを理解する最良の方法は、段階的に進むことです。Redisの基本に精通してください。開始点として特定のモジュールまたは機能を選択します。モジュールまたは機能のエントリポイントから始めて、行ごとにコードを表示します。関数コールチェーンを介してコードを表示します。 Redisが使用する基礎となるデータ構造に精通してください。 Redisが使用するアルゴリズムを特定します。

Redis指令を使用するには、次の手順が必要です。Redisクライアントを開きます。コマンド(動詞キー値)を入力します。必要なパラメーターを提供します(指示ごとに異なります)。 Enterを押してコマンドを実行します。 Redisは、操作の結果を示す応答を返します(通常はOKまたは-ERR)。

次の2つの方法を使用して、Redisのデータをクリアすることができます。Flushallコマンド:データベース内のすべてのキーと値を削除します。 Config ResetStatコマンド:データベースのすべての状態(キー、値、その他の統計を含む)をリセットします。
