1. Redis のレプリケーション:
ここで最初に説明する必要があるのは、Redis でのマスター/スレーブ モードの構成は非常に簡単であるということです。このブログを読んでいただければ簡単にできると思います。ここでは、最初にいくつかの理論的な知識を列挙し、次に実際の事例を示します。
次のリストは、Redis レプリケーションの機能と利点を明確に説明しています。
1) 同じマスターは複数のスレーブを同期できます。
2). スレーブは他のスレーブからの接続および同期リクエストも受け入れることができるため、マスターの同期プレッシャーを効果的に軽減できます。したがって、Redis のレプリケーション アーキテクチャはグラフ構造として考えることができます。
3). マスターサーバーは、ノンブロッキング方式でスレーブにサービスを提供します。したがって、マスターとスレーブの同期中も、クライアントはクエリまたは変更リクエストを送信できます。
4). スレーブサーバーも非ブロッキング方式でデータ同期を完了します。同期中にクライアントがクエリリクエストを送信すると、Redis は同期前にデータを返します。
5). マスターの読み取り操作の負荷を軽減するために、スレーブ サーバーは読み取り専用操作サービスをクライアントに提供できますが、書き込みサービスはマスターによって完了する必要があります。それでも、システムの拡張性は大幅に向上しました。
6). マスターはデータ保存操作をスレーブに引き渡すことができるため、この操作を完了するためにマスター内の独立したプロセスが必要なくなります。
2. レプリケーションの仕組み:
スレーブが起動してマスターに接続すると、SYNC コマンドがアクティブに送信されます。その後、マスターはバックグラウンド保存プロセスを開始し、データ セットを変更するために受信したすべてのコマンドを収集します。バックグラウンド プロセスが完了すると、マスターはデータベース ファイル全体をスレーブに転送して完全な同期を完了します。データベース ファイル データを受信した後、スレーブ サーバーはそれを保存し、メモリにロードします。その後、マスターは収集したすべての変更コマンドと新しい変更コマンドを順番にスレーブに送信し続け、今度はスレーブがこれらのデータ変更コマンドを実行して、最終的なデータ同期を達成します。
マスターとスレーブ間のリンクが切断された場合、スレーブは自動的にマスターに再接続できますが、接続が成功すると、完全な同期が自動的に実行されます。
3. レプリケーションを構成する方法:
次の手順を参照してください:
1). 同じマシン上で 2 つの Redis サーバーを同時に起動し、6379 や 6379 などの異なるポートをリッスンすることを検討できます。 6380。
2). スレーブ サーバーでコマンドを実行します:
/> redis-cli -p 6380 #这里我们假设Slave的端口号是6380 redis 127.0.0.1:6380> slaveof 127.0.0.1 6379 #我们假设Master和Slave在同一台主机,Master的端口为6379 OK
上記の方法は、slaveof コマンドの実行後に、redis_6380 が redis_6379 のスレーブになることを保証するだけであり、サービス (redis_6380) が再起動されると、それらの間のレプリケーション関係が終了します。 。
2 つのサーバー間のレプリケーション関係を長期間確保したい場合は、redis_6380 の構成ファイルに次の変更を加えることができます:
/> cd /etc/redis #切换Redis服务器配置文件所在的目录。 /> ls 6379.conf 6380.conf /> vi 6380.conf 将 # slaveof <masterip> <masterport> 改为 slaveof 127.0.0.1 6379
保存して終了します。
これにより、Redis_6380 サービス プログラムが各起動後に Redis_6379 とのレプリケーション接続をアクティブに確立するようになります。
4. 応用例:
ここでは、マスターとスレーブが確立されていると仮定します。
#启动master服务器。 [root@Stephen-PC redis]# redis-cli -p 6379 redis 127.0.0.1:6379> #情况Master当前数据库中的所有Keys。 redis 127.0.0.1:6379> flushdb OK #在Master中创建新的Keys作为测试数据。 redis 127.0.0.1:6379> set mykey hello OK redis 127.0.0.1:6379> set mykey2 world OK #查看Master中存在哪些Keys。 redis 127.0.0.1:6379> keys * 1) "mykey" 2) "mykey2" #启动slave服务器。 [root@Stephen-PC redis]# redis-cli -p 6380 #查看Slave中的Keys是否和Master中一致,从结果看,他们是相等的。 redis 127.0.0.1:6380> keys * 1) "mykey" 2) "mykey2" #在Master中删除其中一个测试Key,并查看删除后的结果。 redis 127.0.0.1:6379> del mykey2 (integer) 1 redis 127.0.0.1:6379> keys * 1) "mykey" #在Slave中查看是否mykey2也已经在Slave中被删除。 redis 127.0.0.1:6380> keys * 1) "mykey"
上記は Redis チュートリアル (9): マスター/スレーブ コピーの構成例の内容です。さらに関連する内容については、PHP 中国語 Web サイト (www.php.cn) に注目してください。