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. Linux Ubuntu 安装、汉化、常用操作

    一.安装Ubuntu Desktop 安装前准备 现在的PC机都可以满足要求. 软件准备 vmware:http://www.vmware.com/cn ubuntu:18ubuntu Desktop ...

  2. 微服务构建: Spring Boot

    在展开 Spring Cloud 的微服务架构部署之前, 我们先了解一下用于构建微服务的基础框架-Spring Boot. 由于 Spring Cloud 的构建基于 Spring Boot 实现, ...

  3. WebRTC入门

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

  4. ansible软件2

    常用软件安装及使用目录  ansible使用1 第1章 copy模块 1.1 创建文件及写入内容 1. [root@m01 scripts]# ansible oldboy -m copy -a &q ...

  5. node 集群与稳定

    node集群搭建好之后,还需要考虑一些细节问题. 性能问题 多个工作进程的存活状态管理 工作进程的平滑重启 配置或者静态数据的动态重新载入 其它细节 1 进程事件 Node子进程对象除了send()方 ...

  6. OGG 跳过事务(转)

    http://blog.chinaunix.net/uid-26190993-id-3434074.html    在OGG运行过程中,通常会因为各种各样的原因导致容灾端的REPLICAT进程ABEN ...

  7. 随手记录-linux-Linux目录结构

    转:别人的 装完Linux,首先需要弄清Linux 标准目录结构 / root —?启动Linux时使用的一些核心文件.如操作系统内核.引导程序Grub等. home —?存储普通用户的个人文件 ft ...

  8. 第三周linux学习

    实验二 Linux下C语言编程基础 一.实验目的 1. 熟悉Linux系统下的开发环境 2. 熟悉vi的基本操作 3. 熟悉gcc编译器的基本原理 4. 熟练使用gcc编译器的常用选项 5 .熟练使用 ...

  9. 2017-2018-2 1723 『Java程序设计』课程 结对编程练习-四则运算-准备阶段

    2017-2018-2 1723 『Java程序设计』课程 结对编程练习-四则运算-准备阶段 在一个人孤身奋斗了将近半个学期以后,终于迎来的我们的第一次团队协作共同编码,也就是,我们的第一个结对编程练 ...

  10. Sprint会议2

    昨天:准备查找安卓APP开发的有关资料,安装有关软件 今天:自己制作一个安卓小程序,熟悉一下操作 遇到问题:安装遇到问题,环境配置出现问题