Redis主从拷贝的特点

  1. 同一个Master可以拥有多个Slaves。
  2. Master下的Slave还可以接受同一架构中其它slave的链接与同步请求,实现数据的级联复制,即Master->Slave->Slave模式;
  3. Master以非阻塞的方式同步数据至slave,这将意味着Master会继续处理一个或多个slave的读写请求;

    4.Slave端同步数据也可以修改为非阻塞是的方式,当slave在执行新的同步时,它仍可以用旧的数据信息来提供查询;否则,当slave与master失去联系时,slave会返回一个错误给客户端;
  4. 主从复制具有可扩展性,即多个slave专门提供只读查询与数据的冗余,Master端专门提供写操作;
  5. 通过配置禁用Master数据持久化机制,将其数据持久化操作交给Slaves完成,避免在Master中要有独立的进程来完成此操作。

Redis主从拷贝的过程

slave连接上master之后,slave发送一个SYNC命令到master,master接收到命令之后,无论是第一次同步建立的连接,还是连接断开后的重新连接,master会开启BGSAVE操作,启动一个后台进程,保存一份当前master内存快照,并且开始保存从调用BGSAVE之后的所有写命令,master生成完快照之后,发送内存快照rdb文件给slave。slave接收到master发送过来的rdb文件之后,将清空所有旧数据,加载接收到的rdb文件到内存中,发送完rdb文件给slave之后,开始发送刚刚保存的写操作日志给slave,slave执行这些写操作,至此,主从数据保存一致。发送完写日志之后,master会增量发送之后的写操作给slave,使主从一致。

ps: 当master和slave的连接断开时,slave可以自动重新建立连接。如果master同时收到多个slave发来的同步连接命令,只会使用启动一个进程来写内存快照,然后发送给所有的slave

Master write, Slave read机制

redis的主从复制,通过程序实现数据的读写分离,让master负责处理些请求,slave负责处理读请求,通过扩展slave处理更多的并发请求,减轻master端的负载。

ps:在程序中判断用户的读写请求,将write请求发送给master,read请求发送给slave处理

redis主从拷贝配置

开启主从复制,最简单的方式,连接上从机redis,执行slaveof <主机host> <主机端口>,另外也可以在从机的配置文件中加入slaveof <主机host> <主机端口>,这样从机启动的时候,就会自动连接主机,并且同步数据。

slaveof 192.168.100.126 6379 # 配置主机信息
masterauth <master-password> # 如果主机设置了密码,配置密码
slave-serve-stale-data yes # 配置当从机正在和主机进行同步的时候是否响应,如果配置是,有可能客户端会读到旧数据,如果配置否,当请求读数据的时候,将会报错SYNC with master in progress
slave-read-only yes # 从机是否只读。这边设置可写,不会同步到主机,
repl-ping-slave-period 10 # 从机发送ping命令到主机的间隔时间。
repl-timeout 60 # 主机响应超时时间,这个包括传输超时,IO超时,ping超时,注意这边时间必须大于上面的间隔时间,要不然会一直报超时错误。
repl-disable-tcp-nodelay no # 是否禁用TCP NODELAY。官方对这个配置用法的建议是:
# By default we optimize for low latency, but in very high traffic conditions
# or when the master and slaves are many hops away, turning this to “yes” may
# be a good idea.
# 默认情况下,我们优化目的是为了低延迟,但是在高传输条件或者主从机分布在路由很多跳之外的,建议禁用掉tcp-nodelay。
slave-priority 100 # 如果master不能再正常工作,那么会在多个slave中,选择优先值最小的一个slave提升为master,优先值为0表示不能提升为master

Redis学习 - 主从拷贝的更多相关文章

  1. redis学习主从配置

    配置slave服务器只需要在配置文件中加入如下配置: slaveof 127.0.0.1 6379 即:slaveof  masterip  masterport

  2. Redis——学习之路四(初识主从配置)

    首先我们配置一台master服务器,两台slave服务器.master服务器配置就是默认配置 端口为6379,添加就一个密码CeshiPassword,然后启动master服务器. 两台slave服务 ...

  3. C# Redis学习系列三:Redis配置主从

    Redis配置主从 主IP :端口      192.168.0.103 6666 从IP:端口       192.168.0.108 3333 配置从库 (1)安装服务: redis-server ...

  4. Redis学习二:Redis高并发之主从模式

    申明 本文章首发自本人公众号:壹枝花算不算浪漫,如若转载请标明来源! 感兴趣的小伙伴可关注个人公众号:壹枝花算不算浪漫 22.jpg 前言 前面已经学习了Redis的持久化方式,接下来开始学习Redi ...

  5. 【Redis】Redis学习(三) Redis 主从模式详解

    不管任何程序,只运行一个实例都是不可靠的,一旦因为网络原因导致所在机器不可达,或者所在服务器挂掉,那么这个程序将不能对外提供服务了,Redis也是一样的.不过Redis的主从并不是解决这个问题的,一些 ...

  6. Redis学习之路(三)之Redis主从和哨兵模式

    目录 一.Redis主从配置 1.环境说明 2.修改主从的redis配置文件 3.启动主从redis 3.数据同步验证 二.Redis哨兵模式 1.Redis sentinel介绍 2.Redis S ...

  7. Redis 学习笔记(五)高可用之主从模式

    上一节提到了 Redis 的持久性,也就是在服务器实例宕机或故障时,拥有再恢复的能力.但是在这个服务器实例宕机恢复期间,是无法接受新的数据请求.对于整体服务而言这是无法容忍的,因此我们可以使用多个服务 ...

  8. 分布式缓存技术redis学习系列(四)——redis高级应用(集群搭建、集群分区原理、集群操作)

    本文是redis学习系列的第四篇,前面我们学习了redis的数据结构和一些高级特性,点击下面链接可回看 <详细讲解redis数据结构(内存模型)以及常用命令> <redis高级应用( ...

  9. 分布式缓存技术redis学习(四)——redis高级应用(集群搭建、集群分区原理、集群操作)

    本文是redis学习系列的第四篇,前面我们学习了redis的数据结构和一些高级特性,点击下面链接可回看 <详细讲解redis数据结构(内存模型)以及常用命令> <redis高级应用( ...

随机推荐

  1. 防csrf详解

    CSRF概念:CSRF跨站点请求伪造(Cross—Site Request Forgery),跟XSS攻击一样,存在巨大的危害性,你可以这样来理解:       攻击者盗用了你的身份,以你的名义发送恶 ...

  2. Elasticsearch Java client(ES Client 简介、Java REST Client、Java Client、Spring Data Elasticsearch)

    elasticsearch系列七:ES Java客户端-Elasticsearch Java client(ES Client 简介.Java REST Client.Java Client.Spri ...

  3. WebRTC入门

    什么是WebRTC? 众所周知,浏览器本身不支持相互之间直接建立信道进行通信,都是通过服务器进行中转.比如现在有两个客户端,甲和乙,他们俩想要通信,首先需要甲和服务器.乙和服务器之间建立信道.甲给乙发 ...

  4. 1分钟入门接口自动化框架Karate

    介绍 在这篇文章中,我们将介绍一下开源的Web-API自动化测试框架——Karate Karate是基于另一个BDD测试框架Cucumber来建立的,并且共用了一些相同的思想.其中之一就是使用Gher ...

  5. http跳转https方法:百度云如何让http自动跳转到https【免费SSL证书使用FAQ】

    之前的一篇文章已经给大家提供了免费SSL证书的申请方法,这一篇文章是告诉大家在使用免费的SSL证书时可能会遇到的问题[怎么让http自动跳转到https以及http与https同时使用]的解决方法. ...

  6. React Native移动开发实战-5-Android平台的调试技巧

    Android平台的调试和其他平台的调试也很类似,例如:在Android Studio打开的工程中,打开源码MainActivity.java,然后,将鼠标移至代码编辑区的左侧后,单击鼠标即可添加断点 ...

  7. JDK动态代理的简单理解

    转载:http://www.cnblogs.com/luotaoyeah/p/3778183.html 动态代理 代理模式是 Java 中的常用设计模式,代理类通过调用被代理类的相关方法,提供预处理. ...

  8. An internal error occurred during: "Launching MVC on Tomcat 7.x".

    删除工作空间下的“/.metadata/.plugins/org.eclipse.core.runtime/.settings/com.genuitec.eclipse.ast.deploy.core ...

  9. 内网php项目访问(切换在线解决)

    之前内网访问出现过问题: 可参考手机访问本地php项目遇到的问题及解决(2015-06-20 09:41) 后来重装wamp之后,要访问还是出现问题 即http://192.168.191.1/mui ...

  10. 《TCP/IP 详解 卷1:协议》第 8 章:Internet 控制报文协议

    路由器是 Internet 的重要组成部分,严密监视 Internet 的操作.IP 协议未给发送失败的 IP 数据包提供一种错误处理,也没有给端系统提供直接的方法来发现错误.为了解决这一不足之处,I ...