配置Redis主从复制

[构建高性能数据库缓存之redis主从复制][http://database.51cto.com/art/201407/444555.htm]

 

一、什么是redis主从复制?

主从复制,当用户往Master端写入数据时,通过Redis Sync机制将数据文件发送至Slave,Slave也会执行相同的操作确保数据一致;且实现Redis的主从复制非常简单。

二、redis主从复制特点

1、同一个Master可以拥有多个Slaves。

2、Master下的Slave还可以接受同一架构中其它slave的链接与同步请求,实现数据的级联复制,即Master->Slave->Slave模式;

3、Master以非阻塞的方式同步数据至slave,这将意味着Master会继续处理一个或多个slave的读写请求;

4、Slave端同步数据也可以修改为非阻塞是的方式,当slave在执行新的同步时,它仍可以用旧的数据信息来提供查询;否则,当slave与master失去联系时,slave会返回一个错误给客户端;

5、主从复制具有可扩展性,即多个slave专门提供只读查询与数据的冗余,Master端专门提供写操作;

6、通过配置禁用Master数据持久化机制,将其数据持久化操作交给Slaves完成,避免在Master中要有独立的进程来完成此操作。

三、redis主从复制原理

当启动一个Slave进程后,它会向Master发送一个SYNC Command,请求同步连接。无论是第一次连接还是重新连接,Master都会启动一个后台进程,将数据快照保存到数据文件中,同时Master会记录所有修改数据的命令并缓存在数据文件中。后台进程完成缓存操作后,Master就发送数据文件给Slave,Slave端将数据文件保存到硬盘上,然后将其在加载到内存中,接着Master就会所有修改数据的操作,将其发送给Slave端。若Slave出现故障导致宕机,恢复正常后会自动重新连接,Master收到Slave的连接后,将其完整的数据文件发送给Slave,如果Mater同时收到多个Slave发来的同步请求,Master只会在后台启动一个进程保存数据文件,然后将其发送给所有的Slave,确保Slave正常。

四、服务器资源列表


 

五、配置过程

关于Redis的安装与配置这里便不操作,想了解的朋友请阅读:高性能数据库缓存之redis(一)http://cfwlxf.blog.51cto.com/3966339/1423106
 

3、1 Master端操作如下:

运行redis服务

  1. [root@redis_master sh]# redis-server/etc/redis/redis.conf 

查询redis运行日志

##通过阅读日志文件输出的一些信息,可以看出Master与Slave建立连接时,需要执行的会话机制:加载数据文件至硬盘,用时0.012秒,可想而知速度是多么的快,当然得依据数据的大小去评测;服务连接至6379端口,收到Slave同步连接请求,开启“BGSAVE”同步等;
 

清除Master端数据库中所有Key

  1. [root@redis_master sh]# redis-cli   
  2. 127.0.0.1:6379> FLUSHALL   
  3. OK   
  4. 127.0.0.1:6379> keys *   
  5. (empty list or set) 

3、2 Slave端操作如下:

[root@redis_slave ~]# vim/etc/redis/redis.conf

#添加Master端的IP与端口

  1. # slaveof <masterip><masterport>   
  2. slaveof 192.168.8.8 6379 

运行redis

  1. [root@redis_slave ~]# redis-server/etc/redis/redis.conf 

查询Slave运行日志

##分析redis日志,可以看出Slave与Master建立连接,数据同步的过程;如:发送SYNC命令,与Master端192.168.8.8:6379建立连接,然后Slave sync started;随后Master发送PING命令检查Slave的存活状态,复制被继续….

查询数据库中的所有key

  1. [root@redis_slave ~]# redis-cli                   
  2. 127.0.0.1:6379> keys *   
  3. (empty list or set) 

3、3 slave2端操作如下:

[root@redis_slave2 ~]# vim/etc/redis/redis.conf

#添加Slave端的IP与端口,实现级联复制;

  1. # slaveof <masterip><masterport>   
  2. slaveof 192.168.8.10 6379 

#运行redis服务

  1. [root@redis_slave2 ~]# redis-server/etc/redis/redis.conf 

查询redis运行日志

##结果与Slave1类似,只不过Slave2与Slave1(192.168.8.10:6379)建立连接,同步数据;MySQL的级联复制便是这样,Master->Slave1->Slave2;

#查询数据库的所有key

[root@redis_slave2 ~]# redis-cli

127.0.0.1:6379> keys *

(empty list or set)

3、4 master端操作如下:

  1. [root@redis_master sh]# redis-cli   
  2. 127.0.0.1:6379> MSET ID 1005 NAMEMariaDB City BeiJing   
  3. OK   
  4. 127.0.0.1:6379> MGET ID NAME City   
  5. 1) "1005" 
  6. 2) "MariaDB" 
  7. 3) "BeiJing" 
  8. 127.0.0.1:6379> keys *   
  9. 1) "NAME" 
  10. 2) "ID" 
  11. 3) "City" 

3、5 客户端验证同步结果

slave1端验证

  1. [root@redis_slave ~]# redis-cli   
  2. 127.0.0.1:6379> auth !@#aedf   
  3. 127.0.0.1:6379> keys *   
  4. 1) "City" 
  5. 2) "NAME" 
  6. 3) "ID" 
  7. 127.0.0.1:6379> MGET ID NAME City   
  8. 1) "1005" 
  9. 2) "MariaDB" 
  10. 3) "BeiJing" 

slave2端验证

  1. [root@redis_slave2 ~]# redis-cli   
  2. 127.0.0.1:6379> keys *   
  3. 1) "ID" 
  4. 2) "NAME" 
  5. 3) "City" 
  6. 127.0.0.1:6379> MGET ID NAME City   
  7. 1) "1005" 
  8. 2) "MariaDB" 
  9. 3) "BeiJing" 

四、Master write,Slave read机制

Redis的主从复制,通过程序实现数据的读写分离,让Master负责处理写请求,Slave负责处理读请求;通过扩展Slave处理更多的并发请求,减轻Master端的负载,如下图:

此图画得比较简易,展示了实现Redis读写分离的过程,通过判断用户读写请求,将write请求发送给Redis Master处理,Read请求发送给Redis Slave处理,文章中的不足之处,欢迎大家指点。

博文地址:http://cfwlxf.blog.51cto.com/3966339/1433637

【编辑推荐】

  1. Redis高级实用特性:安全性与主从复制
  2. Redis数据库高级实用特性:事务控制
  3. 一步完成MySQL向Redis迁移
  4. 深入理解Redis主键失效原理及实现机制
  5. 从应用角度谈新浪微博Redis服务平台

转载于:https://www.cnblogs.com/lsx1993/p/4614912.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/574481.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html div bgcolor,HTML body bgcolor transparent

问题I have this HTMLstyle"margin:0px;padding:0px;"Here i have set bgcolor"#FFFFFF" but i want it to be transparent how to do it ?回答1:HTML provides no means to specify a transparent background (and the means it has to specify backgrou…

php内置函数

array_count_values() 函数用于统计数组中所有值出现的次数。转载于:https://www.cnblogs.com/tris/p/4616252.html

计算机主机外部的连接端口有何作用,微机原理 课后题 标准答案

4.11 ROM、PROM、EPROM分别用在什么场合&#xff1f;答&#xff1a;① ROM用在一个计算机系统完成开发以后&#xff0c;容纳不再修改的程序和数据。且批量产量要大的场合。② PROM用于非批量的场合。③ EPROM用于软件或系统的开发阶段及批量很小的场合。第五章 微型计算机和外设…

计算机对口升学试题英语,对口招生考试对口升学英语模拟试卷试题.docx

对口升学考试英语模拟试题第一卷英语知识运用一、语音知识&#xff1a;从 A,B,C,D 四个选项中找出一个与其他三个单词划线部分发音不同的选项。1.A. punishB. rushC. guestD. hundred2.A. graspedB. guidedC. handedD. planted3.A. schoolB. chemistryC. championD. stomach4.A…

计算机应用头部案例提交,基于头部位置的应用程序放置的制作方法

技术特征&#xff1a;1.一种电子设备&#xff0c;包括&#xff1a;一个或多个处理器&#xff1b;和存储器&#xff0c;所述存储器存储被配置为由所述一个或多个处理器执行的一个或多个程序&#xff0c;所述一个或多个程序包括用于执行以下操作的指令&#xff1a;在计算机生成的…

Maven学习总结(七)——eclipse中使用Maven创建Web项目

Maven学习总结(七)——eclipse中使用Maven创建Web项目 一、创建Web项目 1.1 选择建立Maven Project 选择File -> New ->Project&#xff0c;如下图所示&#xff1a; 在New窗口中选择 Maven -> Maven Project。点击【next】如下图所示&#xff1a; 1.2 选择项目路径 根…

notice

*****测量***** 转载于:https://www.cnblogs.com/mengfanrong/p/4622864.html

html文件用safari打开方式,在html中打开(在Safari中)

嗯&#xff0c;你说的是UIDocumentInteractionController那么。实施UIDocumentInteractionControllerDelegate在UIViewController- (UIViewController *)documentInteractionControllerViewControllerForPreview:(UIDocumentInteractionController *)controller { return self;…

简单的Flash GUI工具(Simple Flash GUI Tool)

原文引用&#xff1a;http://blog.soulwire.co.uk/code/actionscript-3/simple-flash-prototype-gui-tool#more-1242 简单的Flash GUI工具 40 代码: 用最小的比较快AS3原型 更新:基思自己一直致力于类似的想法,并释放 MinimalConfigurator 。 基思彼得的 最小的组件 任何Flash…

计算机网络模拟校园,计算机网络课程设计-模拟校园网组网实验

计算机网络课程设计-模拟校园网组网实验 福建农林大学金山学院 信息工程类 课程实习报告 课程名称&#xff1a; 计算机网络 实习题目&#xff1a; 校园网组网方案 姓 名&#xff1a; 严夫 系&#xff1a; 信息与机电工程系 专 业&#xff1a; 计算机科学与技术 年 级&#xff1…

西南科技大学计算机综合大纲,2019年西南科技大学信息工程学院考研复试大纲...

2019年西南科技大学信息工程学院考研复试大纲一、《控制系统综合》考试说明1、《控制系统综合》&#xff0c;考核学生对控制类核心课程基本概念、基本原理、基本方法的理解&#xff0c;以及应用基础知识&#xff0c;分析或解决较为复杂的问题的水平;2、《控制系统综合》&#x…

设计模式综述

《java23种设计模式总结》http://blog.csdn.net/lc2470348636/article/details/8935758 《设计模式大集锦 程序员面试全攻略》http://www.csdn.net/article/2012-06-04/2806324-software-design-interview-questions 设计模式&#xff1a;构建OO系统的隐含经验。 特性&#xff…

计算机网络纳新水粉画,小学教育专业“书法诗画创作社团”顺利举办纳新活动...

原标题&#xff1a;小学教育专业“书法诗画创作社团”顺利举办纳新活动小学教育专业“书法诗画创作社团”顺利举办纳新活动为了丰富同学们的课余生活&#xff0c;向全校师生展现小学教育专业的风采&#xff0c;2018年10月21日上午9:30&#xff0c;隶属于小学教育专业的“书法诗…

理论物理极础3:动力学

莱尼&#xff1a;“乔治&#xff0c;物体咋会运动起来&#xff1f;” 乔治&#xff1a;“因为物体受力&#xff0c;莱尼。” 莱尼&#xff1a;“物体咋会又不动了&#xff1f;” 乔治&#xff1a;“还是因为物体受力&#xff0c;莱尼。” 亚里士多德运动定律 亚里士多德生活在一…

计算机贡共享,做点小贡献,计算机、控制面板、网络和共享中心……的路径

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼你好 你那个天气怎么改的 就是 红色圈 那个麻烦你 帮我改下[rainmeter]iron man/jarvis theme desktopby barbadianOne-weather VARIABLES ;Metadata added by RainBrowser;http://rainmeter.net/RainCMS/?qRainmeter101_AnatomyO…

人工神工机器人是什么_为什么企业要用电销机器人代理人工

不管各行各业&#xff0c;只要你有产品有服务&#xff0c;就离不开销售工作。销售工作分哪些&#xff0c;我们可以简单总结&#xff1a;1、人工客服&#xff0c;通过人工处理电话、上门、在线咨询工作。2、销售人员&#xff0c;分析客户名单&#xff0c;主动寻找筛选洽谈客户&a…

【WS-Federation】到底有多少公司在用WS-Federation

到底有多少公司在用WS-Federation&#xff1f; sso先调用一个登录接口 获取一个token 然后再调用各种业务接口 如果是ssl token 直接暴露就行了 没有ssl 最好每次取一个token&#xff0c; token 设置过期时间 问题可能不会这个简单 要不用框架干屁用 继续研究 转载于:https://w…

树莓派网页服务器的网页留言板,树莓派利用Django搭建聊天网页服务器 —— 准备篇...

利用Django在树莓派上搭建一个聊天网页服务器&#xff0c;话很少说&#xff0c;直接上流程。html首先来看一下刚建立的Django项目文件结构&#xff1a;前端 项目文件配置setting.py配置第一个咱们先来看一下setting.py文件的配置&#xff0c;须要更改两处地方&#xff1a;pytho…

hdu4956 Poor Hanamichi

解决暴力的直接方法。一个直接的推论x%11方法。打表可以发现&#xff0c;以解决不同的情况都不会在很大程度上会出现。 所以从l暴力开始枚举。找到的第一个错误值输出要。如果它超过r同样在美国发现-1. #include <iostream> #include <cstdlib> #include <cstri…

verilog异步复位jk触发器_HDLBits: 在线学习Verilog(Problem 120-126)

这几天在刷HDLBits,参考的是HDLBits中文导学专栏:HDLBits中文导学,刷到120题的时候发现缺少了中间的120题到126题的解析&#xff0c;就打算自己边写边记录一下。也方便其他的同学进行参考。Problem 120 Simple FSM 1s牛刀小试一个很简单的状态机的题目&#xff0c;给定一个输入…