在多台服务器上简单实现Redis的数据主从复制
2011-05-11 22:56
549 查看
Redis的主从复制功能非常强大,一个master可以拥有多个slave,而一个slave又可以拥有多个slave,如此下去,形成了强大的多级服务器集群架构。下面我演示下怎样在多台服务器上进行Redis数据主从复制。这里我假设有两台服务器,一台是Windows操作系统(局域网IP:192.168.3.82),一台是Linux操作系统(局域网IP:192.168.3.90),在两个操作系统都安装redis,Windows操作系统使用cygwin工具进行安装,命令为:
viewsourceprint?
可以通过"maketest”命令判断是否安装成功。
这里我使用1个master以及2个slave(master在Windows下,一个slave在Windows下,一个slave在Linux下),基本流程是:
1.在Windows服务器上创建两个目录,Demo1,Demo2,其中Demo1用来存放Master服务,Demo2用来存放Slave服务,
在Master服务中的配置文件修改:
viewsourceprint?
在Slave服务中的配置文件修改:
viewsourceprint?
2.在Linux服务器上创建一个目录,Demo,Demo存放Slave服务,在服务中的配置文件修改:
viewsourceprint?
这样就完成了所有的配置。
3.现在运行这3个服务,通过命令:
viewsourceprint?
来启动redis服务。
注意到,当我启动master,然后启动一个slave的时候,可以发现slave上:
会发送一个SYNC请求,从Master上面进行相应,而且它支持自动重连,即当master掉线的情况下,它会处于等待请求的状态。
而Master上:
能够接受Slave的应答,并且开始持久化操作,说明在Slave每次去连接Master的时候,都会去持久化磁盘。
4.现在开始写一个客户端程序,使用到ServiceStack.Redis.dll的.NET组件:
viewsourceprint?
运行结果:
数据Set的时候,数据保存在内存中,当调用Save方法时候,将数据保存在磁盘中。
其中你会发现在3个服务目录中,都出现了dump.rdb,说明Master的文件都同步到Slave中去了。
用UE编辑器打开文件查看:
从Redis源码中,可以发现rdb文件采用的是lzf压缩算法进行实现,默认lzf压缩算法是开启的。
这样你可以通过其他的客户端程序或者Web平台去读取Slave磁盘数据库的数据,真正达到了读写分离的目的。
1 | $ tar xzfredis-2.2.2. tar .gz |
2 | $ cd redis-2.2.2 |
3 | $ make |
这里我使用1个master以及2个slave(master在Windows下,一个slave在Windows下,一个slave在Linux下),基本流程是:
1.在Windows服务器上创建两个目录,Demo1,Demo2,其中Demo1用来存放Master服务,Demo2用来存放Slave服务,
在Master服务中的配置文件修改:
1 | bind192.168.3.82 |
1 | port6381(服务端口号要分开) |
2 | bind192.168.3.82 |
3 | slaveof192.168.3.826379(设置master的Host以及Port) |
1 | bind192.168.3.90 |
2 | slaveof192.168.3.826379(设置master的Host以及Port) |
3.现在运行这3个服务,通过命令:
1 | ./redis-serverredis.conf |
注意到,当我启动master,然后启动一个slave的时候,可以发现slave上:
会发送一个SYNC请求,从Master上面进行相应,而且它支持自动重连,即当master掉线的情况下,它会处于等待请求的状态。
而Master上:
能够接受Slave的应答,并且开始持久化操作,说明在Slave每次去连接Master的时候,都会去持久化磁盘。
4.现在开始写一个客户端程序,使用到ServiceStack.Redis.dll的.NET组件:
01 | using ServiceStack.Redis; |
02 |
03 | static void Main( string []args) |
04 | { |
05 | IRedisClientFactoryfactory= new RedisCacheClientFactory(); |
06 | IRedisClientclient=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的时候,数据保存在内存中,当调用Save方法时候,将数据保存在磁盘中。
其中你会发现在3个服务目录中,都出现了dump.rdb,说明Master的文件都同步到Slave中去了。
用UE编辑器打开文件查看:
从Redis源码中,可以发现rdb文件采用的是lzf压缩算法进行实现,默认lzf压缩算法是开启的。
这样你可以通过其他的客户端程序或者Web平台去读取Slave磁盘数据库的数据,真正达到了读写分离的目的。
相关文章推荐
- 在多台服务器上简单实现Redis的数据主从复制
- 在多台服务器上简单实现Redis的数据主从复制
- 在多台服务器上简单实现Redis的数据主从复制
- 在多台服务器上简单实现Redis的数据主从复制
- 在多台服务器上简单实现Redis的数据主从复制
- 在多台服务器上简单实现Redis的数据主从复制
- 在多台服务器上简单实现Redis的数据主从复制
- 在多台服务器上简单实现Redis的数据主从复制
- 在多台服务器上简单实现Redis的数据主从复制
- 在多台服务器上简单实现Redis的数据主从复制
- 在多台服务器上简单实现Redis的数据主从复制
- 在多台服务器上简单实现Redis的数据主从复制(3)(转载)
- 在多台服务器上简单实现Redis的数据主从复制
- 实现多台服务器上Redis的数据主从复制的功能
- 搭建linux服务器集群,简单实现,负载均衡,动静分离,数据主从复制,分布式缓存,共享session回话。
- 利用rsync+inotify实现主从服务器数据同步的简单案例
- 1个Nginx+2个tomcat+2个redis服务器(主从复制)实现反向代理,实现动静分离。
- 实现redis(主从,sentinel,cluster)的主从复制集群
- Redis3.0集群crc16算法php实现方法(php取得redis3.0集群中redis数据所在的redis分区插槽,并根据分区插槽取得分区所在redis服务器地址)
- DevExpress中XtraGrid主从表数据显示的简单实现