设为首页 收藏本站
查看: 686|回复: 0

[经验分享] 在多台服务器上简单实现Redis的数据主从复制【转】

[复制链接]

尚未签到

发表于 2016-12-21 07:39:03 | 显示全部楼层 |阅读模式
  Redis的主从复制功能非常强大,一个master可以拥有多个slave,而一个slave又可以拥有多个slave,如此下去,形成了强大的多级服务器集群架构。下面我演示下怎样在多台服务器上进行Redis数据主从复制。这里我假设有两台服务器,一台是Windows操作系统(局域网 IP:192.168.3.82),一台是Linux操作系统(局域网IP:192.168.3.90),在两个操作系统都安装 redis,Windows操作系统使用cygwin工具进行安装,命令为:
1$ tarxzf redis-2.2.2.tar.gz

2$ cdredis-2.2.2

3$ make




  可以通过"make test”命令判断是否安装成功。
  这里我使用1个master以及2个slave(master在Windows下,一个slave在Windows下,一个slave在Linux下),基本流程是:

  1. 在Windows服务器上创建两个目录,Demo1,Demo2,其中Demo1用来存放Master服务,Demo2用来存放Slave服务,
  在Master服务中的配置文件修改:
1bind 192.168.3.82




  在Slave服务中的配置文件修改:
1port 6381(服务端口号要分开)

2bind 192.168.3.82

3slaveof 192.168.3.82 6379 (设置master的Host以及Port)




  2. 在Linux服务器上创建一个目录,Demo,Demo存放Slave服务,在服务中的配置文件修改:
1bind 192.168.3.90

2slaveof 192.168.3.82 6379(设置master的Host以及Port)




  这样就完成了所有的配置。
  3. 现在运行这3个服务,通过命令:
1./redis-serverredis.conf




  来启动redis服务。
  注意到,当我启动master,然后启动一个slave的时候,可以发现slave上:

  会发送一个SYNC请求,从Master上面进行相应,而且它支持自动重连,即当master掉线的情况下,它会处于等待请求的状态。
  而Master上:

  能够接受Slave的应答,并且开始持久化操作,说明在Slave每次去连接Master的时候,都会去持久化磁盘。
  4. 现在开始写一个客户端程序,使用到ServiceStack.Redis.dll的.NET组件:
 
01usingServiceStack.Redis;

02 

03staticvoidMain(string[] args)

04{

05    IRedisClientFactory factory = newRedisCacheClientFactory();

06    IRedisClient client = factory.CreateRedisClient("192.168.3.82", 6379);

07 

08    client.Set<string>("username", "leepy");

09 

10    stringusername = client.Get<string>("username");

11 

12    client.Save();

13 

14    Console.WriteLine("username: {0}", username);

15 

16    Console.ReadLine();

17}</string></string>



  运行结果:

  数据Set的时候,数据保存在内存中,当调用Save方法时候,将数据保存在磁盘中。
  其中你会发现在3个服务目录中,都出现了dump.rdb,说明Master的文件都同步到Slave中去了。


  用UE编辑器打开文件查看:

从Redis源码中,可以发现rdb文件采用的是lzf压缩算法进行实现,默认lzf压缩算法是开启的。

  这样你可以通过其他的客户端程序或者Web平台去读取Slave磁盘数据库的数据,真正达到了读写分离的目的。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-317063-1-1.html 上篇帖子: 三、Java内存数据库实践之深入浅出Redis 下篇帖子: spring同时集成redis和mongodb时遇到多个资源文件加载的问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表