複数のサーバ上でのRedisのデータ主従レプリケーションを実現する機能

9270 ワード

Redisのプライマリ・スレーブ・レプリケーション機能は非常に強力で、1つのmasterは複数のslaveを持つことができ、1つのslaveは複数のslaveを持つことができ、このままでは強力なマルチレベル・サーバ・クラスタ・アーキテクチャが形成されます.次に、複数のサーバでRedisデータのプライマリ・セカンダリ・レプリケーションを行う方法を示します.ここで私は2台のサーバーがあると仮定して、1台はWindowsオペレーティングシステム(LAN IP:192.168.3.82)、1台はLinuxオペレーティングシステム(LAN IP:192.168.3.90)、2つのオペレーティングシステムにredisをインストールして、Windowsオペレーティングシステムはcygwinツールを使ってインストールして、コマンドは:
1	$ tar xzf redis-2.2.2.tar.gz
2	$ cd redis-2.2.2
3	$ make

「make test」コマンドでインストールに成功したかどうかを判断できます.
 
ここで私は1つのmasterと2つのslave(masterはWindowsの下で、1つのslaveはWindowsの下で、1つのslaveはLinuxの下で)を使って、基本的な流れは:
 
1.Windowsサーバ上に2つのディレクトリ、Demo 1、Demo 2を作成します.ここでDemo 1はMasterサービスを保存し、Demo 2はSlaveサービスを保存します.
Masterサービスでのプロファイルの変更:
1	bind 192.168.3.82

Slaveサービスでのプロファイルの変更:
1	port 6381(        )
2	bind 192.168.3.82
3	slaveof 192.168.3.82 6379 (  master Host  Port)

2.Linuxサーバ上にディレクトリを作成し、Demo、DemoはSlaveサービスを保存し、サービス内のプロファイルを変更する.
1	bind 192.168.3.90
2	slaveof 192.168.3.82 6379(  master Host  Port)

これですべての構成が完了します.
 
3.コマンドにより、この3つのサービスを実行します.
1	./redis-server redis.conf

をクリックしてredisサービスを開始します.
 
マスターを起動してslaveを起動すると、slaveに次のことがわかります.
SYNCリクエストが送信され、Masterから対応し、自動再接続がサポートされます.すなわち、masterがオフラインの場合、リクエストが待機している状態になります.
マスターには
Slaveの応答を受け入れることができ、永続化操作を開始し、SlaveがMasterに接続するたびにディスクを永続化することを示します.
 
4.サービススタックに使用するクライアントプログラムの作成を開始します.Redis.dllのNetコンポーネント:
01	using ServiceStack.Redis;
02	  
03	static void Main(string[] args)
04	{
05	    IRedisClientFactory factory = new RedisCacheClientFactory();
06	    IRedisClient client = factory.CreateRedisClient("192.168.3.82", 6379);
07	  
08	    client.Set<STRING>("username", "leepy");
09	  
10	    string username = client.Get<STRING>("username");
11	  
12	    client.Save();
13	  
14	    Console.WriteLine("username: {0}", username);
15	  
16	    Console.ReadLine();
17	}
 

実行結果:
データSetの場合はメモリにデータを保存し、セーブメソッドを呼び出すとディスクにデータを保存します.
3つのサービスディレクトリにdumpが表示されます.rdbは、MasterのファイルがSlaveに同期したことを示しています.
UEエディタでファイルを開いて表示するには、次の手順に従います.
Redisソースコードから,rdbファイルはlzf圧縮アルゴリズムを用いて実現され,デフォルトlzf圧縮アルゴリズムはオンであることが分かった.
 
これにより、他のクライアントプログラムやWebプラットフォームを通じてSlaveディスクデータベースのデータを読み取ることができ、本当に読み書き分離の目的を達成することができます.