Redis多机常用架构-主从
本文内容摘录自同事Perry Zhang的讲解,如需转载须本人同意。
1.主从
命令:slaveof <IP><PORT>
redis主从配置:redis支持master-slave的主从配置,配置方法是在从机的配置文件中指定slaveof参数为主机的ip和port即可
将一台服务器(Slave)变成为另外一个服务器(Master)的复制品

复制过程:
1. Slave向Master发送 Sync命令
2. 接到 Sync命令的Master会调用BGSAVE ,创建一个 RDB 文件,并使用Backlog记录接下来执行的所有写命令
3. 当Master执行完 BGSAVE 命令时,它会向Slave发送 RDB 文件,而Slave则会接收并载入这个文件
4. Master将Backlog储存的所有写命令发送给Slave执行


Sync 命令同步后,主从会达到暂时的数据一致性。
数据不一致:Master执行了新的写命令,则主从数据又将不一致

5. 在主从完成同步之后,Master每执行一个写命令,它都会将被执行的写命令发送给Slave执行,这个操作被称为 “Command Propagate”
Command Propagate是持续的过程:只要复制仍在继续,命令传播就会一直进行,使得主从的状态可以一直保持一致

之后每当有什么新的写命令被执行了,比如 SET k7 v7、SET k8 v8 等等,Master也会继续将命令传播给Slave执行。
2.8之后,Redis使用PSync命令代替Sync
PSync最大特性:部分重同步(Partial Resync)
为什么采用部分重同步技术?
在主从断线并且重新连接的时候,只要条件允许,PSYNC 可以让Master只向Slave同步断线期间缺失的数据,而不用重新向Slave同步整个库
Sync断线重连过程

PSync断线重连过程

复制的数据一致性问题
理论上会出现复制不一致的情况:在Master执行完写命令直到Slave执行完写命令的这段时间里,如下例
Redis 目前的复制实现只保证最终一致性,而不是强一致性

Redis多机常用架构-主从的更多相关文章
- Redis多机常用架构-cluster
Redis-cluster:去中心化,中间件,集群中任意节点平等,任一节点可获得全局的数据 Redis-cluster 拓扑图: 架构演变及 cap 理论: 单机 Redis 属于 cp 模型. Re ...
- Redis多机常用架构-sentinel
哨兵经典架构 sentinel结构 哨兵工作原理 Sentinel 通过配置文件发现Master,如下: Sentinel 通过向Master发送 INFO 命令来自动获得所有Slave的地址 跟Ma ...
- 【转】Nginx学习---Nginx&&Redis&&hcache三层缓存架构总结
[原文]https://www.toutiao.com/i6594307974817120782/ 摘要: 对于高并发架构,毫无疑问缓存是最重要的一环,对于大量的高并发,可以采用三层缓存架构来实现,n ...
- Redis之(七)主从同步与集群管理
8.1 主从同步原理 像MySQL一样,Redis是支持主从同步的,而且也支持一主多从以及多级从结构. 主从结构,一是为了纯粹的冗余备份,二是为了提升读性能,比如很消耗性能的SORT就可以由从服务器来 ...
- Kubernetes 在生产环境中常用架构
Kubernetes 在生产环境中常用架构 首先,我们来梳理下Kubernetes生产架构,其设计适用于绝大多数环境.如下图所示 在该架构中,我们可以将其分为四层,如下: Client层:即Kuber ...
- 数据库之redis篇(2)—— redis配置文件,常用命令,性能测试工具
redis配置 如果你是找网上的其他教程来完成以上操作的话,相信你见过有的启动命令是这样的: 启动命令带了这个参数:redis.windows.conf,由于我测试环境是windows平台,所以是这个 ...
- Redis宕机的问题
在主从模式下宕机要分为区分来看: slave从redis宕机 在Redis中从库重新启动后会自动加入到主从架构中,自动完成同步数据: 如果从数据库实现了持久化,只要重新假如到主从架构中会实现增 ...
- Redis|Sentinel 高可用架构
一 前言 Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案,当用Redis做Master-slave的高可用方案时,假如master宕机了,Redis本身(包括它的很多客户端 ...
- 《吊打面试官》系列-Redis哨兵、持久化、主从、手撕LRU
你知道的越多,你不知道的越多 点赞再看,养成习惯 前言 Redis在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在Redis的使用和原理方面对小伙伴们进行360°的刁难.作为一个在互联 ...
随机推荐
- Rethrowing exceptions and preserving the full call stack trace
refer:http://weblogs.asp.net/fmarguerie/archive/2008/01/02/rethrowing-exceptions-and-preserving-the- ...
- JQuery动画效果
jquery动画效果常用方法 1.show()显示效果语法:show(speed,callback)Number/String,Function speend为动画执行时间,单位为毫秒.也可以为slo ...
- 三表联查,这是我目前写过的最长的sql语句,嗯嗯,果然遇到问题才能让我更快成长,更复杂的语句也有了一些心得了
select sum(amount),sum(card_number) from sy_user inner join sy_admin on sy_user.customer_id=sy_admin ...
- java 访问mysql 实例
前提条件: 1.安装eclipse,mysql.java jdk 2.安装mysql connect J (我安装的版本是mysql connect J 5.1.39) 3.配置java环境变量 4 ...
- shll 变量
name=zhagnsan age=11 echo $ name $age 赋值号两边没有任何空格.当想取shell变量的值时,需要在变量名前加上$字符,当所赋的值中间含有空格时,要加上引号 函数: ...
- tcl学习
variables(变量) 语法:set varname value 例如:set a 5 注意:大小写敏感,任意长度,任意字符 使用之前无需申明 substitution(替换) 1 变量值替换 $ ...
- C语言fgetpos()函数:获得当前文件的读写指针(转)
头文件:#include<stdio.h>fgetpos()函数获得当前文件的指针所指的位置,并把该指针所指的位置信息存放到pos所指的对象中.pos以内部格式存储,仅由fgetpos() ...
- linux终端terminal个性化配置(转)
http://blog.csdn.net/pipisorry/article/details/39584489 {本文介绍Linux终端字体颜色设置.终端提示符显示内容设置.自定义alias命令} l ...
- 谈谈Activiti中流程对象之间的关系
详细见:http://www.kafeitu.me/activiti/2012/03/22/workflow-activiti-action.html (咖啡兔好牛!) 详细见: http://blo ...
- 2016CCPC 合肥--最大公约数//每一年通向它的路上,多少人折戟沉沙,多少人功败垂成,有人一战成名,有人从头再来。
有这样一个有关最大公约数的函数:函数 f(x, y): { c=0 当 y>0: { c +=1 t = x % y x = y y = t } 返回 c * x * x} 给出三个正整数n,m ...