Redis的主从配置

一、主从配置过程

关于主从配置的过程,我们这里就不做具体详细解释了,看这个文章,还是不错的:

https://www.cnblogs.com/ysocean/p/9143118.html

二、主从复制的原理

这才是我们的主要问题,我们来看一下

  Redis的复制功能分为同步(sync)和命令传播(command propagate)两个操作。

  ①、旧版同步

  当从节点发出 SLAVEOF 命令,要求从服务器复制主服务器时,从服务器通过向主服务器发送 SYNC 命令来完成。该命令执行步骤:

  1、从服务器向主服务器发送 SYNC 命令

  2、收到 SYNC 命令的主服务器执行 BGSAVE 命令,在后台生成一个 RDB 文件,并使用一个缓冲区记录从开始执行的所有写命令

  3、当主服务器的 BGSAVE 命令执行完毕时,主服务器会将 BGSAVE 命令生成的 RDB 文件发送给从服务器,从服务器接收此 RDB 文件,并将服务器状态更新为RDB文件记录的状态。

  4、主服务器将缓冲区的所有写命令也发送给从服务器,从服务器执行相应命令。

  ②、命令传播

  当同步操作完成之后,主服务器会进行相应的修改命令,这时候从服务器和主服务器状态就会不一致。

  为了让主服务器和从服务器保持状态一致,主服务器需要对从服务器执行命令传播操作,主服务器会将自己的写命令发送给从服务器执行。从服务器执行相应的命令之后,主从服务器状态继续保持一致。

  总结:通过同步操作以及命令传播功能,能够很好的保证了主从一致的特性。

  但是我们考虑一个问题,如果从服务器在同步主服务器期间,突然断开了连接,而这时候主服务器进行了一些写操作,这时候从服务器恢复连接,如果我们在进行同步,那么就必须将主服务器从新生成一个RDB文件,然后给从服务器加载,这样虽然能够保证一致性,但是其实断开连接之前主从服务器状态是保持一致的,不一致的是从服务器断开连接,而主服务器执行了一些写命令,那么从服务器恢复连接后能不能只要断开连接的哪些写命令,而不是整个RDB快照呢?

  同步操作其实是一个非常耗时的操作,主服务器需要先通过 BGSAVE 命令来生成一个 RDB 文件,然后需要将该文件发送给从服务器,从服务器接收该文件之后,接着加载该文件,并且加载期间,从服务器是无法处理其他命令的。

  为了解决这个问题,Redis从2.8版本之后,使用了新的同步命令 PSYNC 来代替 SYNC 命令。该命令的部分重同步功能用于处理断线后重复制的效率问题。也就是说当从服务器在断线后重新连接主服务器时,主服务器只将断开连接后执行的写命令发送给从服务器,从服务器只需要接收并执行这些写命令即可保持主从一致。

三、主从复制的缺点

主从复制虽然解决了主节点的单点故障问题,但是由于所有的写操作都是在 Master 节点上操作,然后同步到 Slave 节点,那么同步就会有一定的延时,当系统很繁忙的时候,延时问题就会更加严重,而且会随着从节点slave的增多而愈加严重。

原文地址:https://www.cnblogs.com/lys-lyy/p/11613041.html

时间: 2024-10-08 15:02:19

Redis的主从配置的相关文章

redis学习主从配置

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

redis哨兵主从配置

REDIS哨兵主从配置 环境描述操作系统:CentOS 5.10 x64硬件配置:阿里云8核8G100G硬盘.IP地址:10.253.2.32 [默认主]IP地址:10.253.5.158[默认从]版本号:redis-2.8 Redis安装部署 Redis是一种高级key-value数据库.它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富.有字符串,链表,集 合和有序集合.支持在服务器端计算集合的并,交和补集.(difference)等,还支持多种排序功能.所以Redis

docker Redis的主从配置

redis是k-v型nosql数据库,支持字符串(string).列表(list).集合(set).散列(hash).有序集合(zset:形如member:score的散列集合,其中member为成员,score为成员得分,必须为float型数据). 综合使用redis的以上5种数据类型,可以将redis应用于各种场景,比如点赞.投票网站.消息队列.分布式锁(使用setnx指令,该指令只有在key不存在的时候,才会执行写入操作).文件分发(没研究过).日志记录等等. redis支持主从配置(拓展

Docker下redis的主从配置

1.拉取redis镜像docker pull redis2.启动3个redis容器服务,分别使用到6379.6380.6381端口docker run --name redis-6379 -p 6379:6379 -d redisdocker run --name redis-6380 -p 6380:6379 -d redisdocker run --name redis-6381 -p 6381:6379 -dredis3.查看容器[[email protected] ~]$ docker

NoSQL -- redis 安装 主从 配置详解 常用命令

Redis 也是key-value存储系统,官方站点 http://redis.io,但相对于memcache,有如下优势: 1.支持更多地value类型(string.hash.lists.sets.sorted sets等): 2.支持数据持久化,预防服务重启后需要重新存储: redis 有两种文件格式:全量数据(RDB=redis database).增量请求(aof=append only file). 前者是将内存中的数据写进磁盘,便于下次读取文件时直接进行加载,快照形式: 后者是将r

linux下如何安装配置redis及主从配置

redis是一种非关系型数据存储工具,这区别于传统的关系型数据库(像MySQL等),类似于memcache,并且其内部集成了对list(链表).set(集合)的操作,可以很方便快速的处理数据(像插入.删除list取交集 并集 差集等),这极大的减轻了底层数据库的压力,并且给用户更快的响应速度. redis的优点:支持主从备份,操作指令丰富,支持异步的数据持久化 一丶使用 将 redis 安装到 /usr/local/webserver/redis 1.下载安装包 wget http://redi

redis的主从配置与故障切换恢复操作

1)机器信息Redis主从结构支持一主多从,这里我使用一主两从(一主一从也行,配置一样)主节点 172.16.0.237 master-node从节点 172.16.0.131 slave-node1 关闭两个节点机的iptables防火墙和selinux 2)安装redis三台节点机的安装步骤一样[[email protected] ~]# wget http://download.redis.io/redis-stable.tar.gz[[email protected] ~]# tar -

Redis之-主从配置

集群的作用:1,主从备份 防止主库down机2,读写分离,分担master压力3,任务分离,如从服务器分担备份的工作 大概同步原理:1,slave启动发现需要连接master,那么sync自动同步一下2,master dump出一份rdb文件给slave3,master新产生的数据,通过缓冲aof文件4,然后通过replicationfeedsalves进程保持联系: master配置:1,关闭rdb快照--备份交给slave2,开启aof slave配置:1,声明slave-of2,配置密码-

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

首先我们配置一台master服务器,两台slave服务器.master服务器配置就是默认配置 端口为6379,添加就一个密码CeshiPassword,然后启动master服务器. 两台slave服务器配置如下: 1.先找到配置redis.windows-service.config文件修改port 6379 为port 6380 2.然后配置master服务器地址:slaveof 127.0.0.1 6379,然后主服务有密码还需要配置密码 masterauth CeshiPassword(本