引言
Redis是一个高性能的缓存中间件,一个Redis服务器可以支撑很多的并发请求。但是在一些超高的并发场景下,虽然Redis读写速度很快,但也会产生读写压力过大,服务器负载过高的情况。为了分担读写的压力和减轻服务器的负担,可以搭建Redis主从架构。主服务器可以进行读写,从服务器只对外提供读的功能。从服务器的数据是由主服务器同步过来。

一、主从复制的概念

主从复制是指将一台主Redis服务器的数据,复制到其他的从Redis服务器。前者称为主服务器(master/leader),后者称为从服务器(slave/follower) ; 数据的复制是单向的,只能由主服务器到从服务器。Master以写为主,Slave以读为主。一个主服务器可以有多个从服务器(或没有从服务器),但一个从服务器只能有一个主服务器。

二、主从复制的作用

1、读写分离:主节点写,从节点读,提高服务器的读写负载能力

2、数据冗余︰主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。

3、故障恢复︰当主服务器宕机时,可以由从服务器提供服务,实现快速的故障恢复 ; 实际上是一种服务的冗余。

4、负载均衡︰在主从复制的基础上,配合读写分离,主服务器提供写服务,从服务器提供读服务,分担服务器负载 ; 尤其是在写少读多的场景下,通过多个从服务器分担读负载,可以大大提高Redis服务器的并发量。

5、高可用基础︰主从复制是哨兵和集群能够实施的基础。

三、主从复制工作流程
主从复制过程大体可以分为3个阶段

1、建立连接阶段(即准备阶段)

2、数据同步阶段

3、命令传播阶段

四、主从复制的原理
1、当从连接上主服务器之后,从服务器向主服务发送进行数据同步消息

2、主服务器接到从服务器发送过来同步消息,把主服务器数据进行持久化,rdb文件,把rdb文件发送从服务器,从服务器拿到rdb进行读取

3、每次主服务器进行写操作之后,和从服务器进行数据同步

五、主从复制搭建过程
在根目录下创建myredis文件夹

打开redis的安装目录,输入pwd找到redis.conf的位置

将redis安装目录下的redis.conf复制到刚刚创建的myredis文件夹中

输入vi redis6380.conf创建一个叫redis6380.conf文件进入编辑,输入相关配置参数

include /myredis/redis.conf 引入我们刚刚复制的redis.conf作为公共文件
pidfile /var/run/redis_6380.pid 设置我们的一个pid文件的位置
port 6380 设置端口号为6380
dbfilename dump6380.rdb 设置持久化文件名
点击esc,输入:wq保存

重复上面步骤在myredis创建redis6381.conf,redis6382.conf,然后配置相关参数

将上述文件配置好后,尝试启动这3个不同端口号的redis服务端,并查看redis进程,此时可发现不同端口号的3个redis服务端在运行

启动不同端口号的redis客户端,输入info replication查看redis主从复制的一些统计信息,此时,我们可以发现三个服务器的role都为master(主节点),slaves(从节点)数量都为0。(默认情况)

此时,我们启动端口号为6381和6382的redis客户端,通过slaveof 127.0.0.1 6380命令将这两端口号的服务器设置为从服务器

此时打开主服务器的redis6380客户端,查看服务器信息,此时,可以看到主服务器的两个从服务器的信息。

六、主从结构的测试
接下来,测试一下主从复制的功能,先在主服务器写入数据,然后对数据进行读取,发现主服务器拥有读和写功能,从服务器只具有读功能。

启动端口号为6381和6382的从服务器客户端,查看数据,并测试写入数据,发现写入数据不成功。

七、主从复制的特点
1、采用异步复制;

2、一个主redis可以含有多个从redis;

3、每个从redis可以接收来自其他从redis服务器的连接;

4、主从复制对于主redis服务器来说是非阻塞的,这意味着当从服务器在进行主从复制同步过程中,主redis仍然可以处理外界的访问请求;

5、主从复制对于从redis服务器来说也是非阻塞的,这意味着,即使从redis在进行主从复制过程中也可以接受外界的查询请求,只不过这时候从redis返回的是以前老的数据, 如果你不想这样,那么在启动redis时,可以在配置文件中进行设置,那么从redis在复制同步过程中来自外界的查询请求都会返回错误给客户端;(虽然说主从复制过程中对于从redis是非阻塞的,但是当从redis从主redis同步过来最新的数据后还需要将新数据加载到内存中,在加载到内存的过程中是阻塞的,在这段时间内的请求将会被阻,但是即使对于大数据集,加载到内存的时间也是比较多的);

6、主从复制提高了redis服务的扩展性,避免单个redis服务器的读写访问压力过大的问题,同时也可以给为数据备份及冗余提供一种解决方案;

7、为了编码主redis服务器写磁盘压力带来的开销,可以配置让主redis不在将数据持久化到磁盘,而是通过连接让一个配置的从redis服务器及时的将相关数据持久化到磁盘,不过这样会存在一个问题,就是主redis服务器一旦重启,因为主redis服务器数据为空,这时候通过主从同步可能导致从redis服务器上的数据也被清空;

参考文档:

(25条消息) Redis主从复制的搭建_?671的博客-CSDN博客_redis主从复制搭建

超详细--redis在Linux环境搭建主从复制的更多相关文章

  1. Windows及Linux环境搭建Redis集群

    一.Windows环境搭建Redis集群 参考资料:Windows 环境搭建Redis集群 二.Linux环境搭建Redis集群 参考资料:Redis Cluster的搭建与部署,实现redis的分布 ...

  2. Windows下Lua+Redis 断点调试环境搭建==Linux下类似

    Lua+Redis 断点调试环境搭建 windows环境,使用Redis,写lua脚本头疼的问题之一不能对脚本断点调试,google加上自己的摸索,终于搞定. 1.下载ZeroBraneStudio, ...

  3. Redis集群环境搭建实践

    0 Redis集群简介 Redis集群(Redis Cluster)是Redis提供的分布式数据库方案,通过分片(sharding)来进行数据共享,并提供复制和故障转移功能.相比于主从复制.哨兵模式, ...

  4. 超强、超详细Redis数据库入门教程

    这篇文章主要介绍了超强.超详细Redis入门教程,本文详细介绍了Redis数据库各个方面的知识,需要的朋友可以参考下 [本教程目录] 1.redis是什么2.redis的作者何许人也3.谁在使用red ...

  5. 超强、超详细Redis数据库入门教程(转载)

    这篇文章主要介绍了超强.超详细Redis入门教程,本文详细介绍了Redis数据库各个方面的知识,需要的朋友可以参考下   [本教程目录] 1.redis是什么 2.redis的作者何许人也 3.谁在使 ...

  6. 超强、超详细Redis入门教程【转】

    这篇文章主要介绍了超强.超详细Redis入门教程,本文详细介绍了Redis数据库各个方面的知识,需要的朋友可以参考下 [本教程目录] 1.redis是什么2.redis的作者何许人也3.谁在使用red ...

  7. 超详细Redis入门教程【转】

    这篇文章主要介绍了超强.超详细Redis入门教程,本文详细介绍了Redis数据库各个方面的知识,需要的朋友可以参考下   [本教程目录] 1.redis是什么 2.redis的作者何许人也 3.谁在使 ...

  8. Linux环境搭建及基础操作

    一.Linux环境搭建 1.安装虚拟机软件(VMWare,Parallel) 虚拟机的作用:将本来不是适合当前操作系统的分区虚拟化成适合当前操作系统的分区格式 2.新建虚拟机: 类似买了一台新的电脑, ...

  9. 她娇羞道“不用这样细致认真的说啊~~”———详细图解在Linux环境中创建运行C程序

    她娇羞说,不用这样细致认真的说啊———详细图解在Linux环境中创建运行C程序“不,这是对学习的负责”我认真说到 叮叮叮,停车,让我们看看如何在Linux虚拟机环境中,创建运行C程序 详细图解在Lin ...

  10. Linux环境搭建-在虚拟机中安装Centos7.0

    最近在空闲时间学习Linux环境中各种服务的安装与配置,都属于入门级别的,这里把所有的学习过程记录下来,和大家一起分享. 我的电脑系统是win7,所以我需要在win7上安装一个虚拟机-VMware,然 ...

随机推荐

  1. HDC2021技术分论坛:HarmonyOS内核技术大揭秘!

    作者:jikecheng,miaoxie,HarmonyOS内核技术专家 HarmonyOS整体框架分为四个层级,如图1所示.从上到下,依次为:第一层是应用层,主要涵盖系统应用.Launcher.设置 ...

  2. MySQL组合索引

    MySQL组引合索优化SQL 我的场景 200w左右的数据,后面会更多 使用定时任务爬取数据插入到自己的数据库.要保证数据的唯一性,所以我用了组合唯一索引. 表结构 最初的组合索引 SQL执行和exp ...

  3. 力扣603(MySQL)-连续空余座位(简单)

    题目: 几个朋友来到电影院的售票处,准备预约连续空余座位. 你能利用表 cinema ,帮他们写一个查询语句,获取所有空余座位,并将它们按照 seat_id 排序后返回吗? 对于如上样例,你的查询语句 ...

  4. HarmonyOS NEXT应用开发案例—状态栏显隐变化

    介绍 本示例介绍使用Scroll组件的滚动事件 onScroll 实现状态栏显隐变化.该场景多用于各种软件的首页.我的等页面中. 效果预览图 使用说明 加载完成后显示状态栏显隐变化页面,上下拖动屏幕, ...

  5. 更便捷:阿里云DCDN离线日志转存全新升级

    简介: 1月6日,阿里云CDN年度产品升级发布会中,阿里云CDN产品专家邓建伟宣布DCDN离线日志转存全新升级,并对离线日志转存方案的价值.应用及使用进行了详细解读. 在日常CDN加速服务过程中会产生 ...

  6. 使用 Arthas 排查 SpringBoot 诡异耗时的 Bug

    简介: 公司有个渠道系统,专门对接三方渠道使用,没有什么业务逻辑,主要是转换报文和参数校验之类的工作,起着一个承上启下的作用.最近,在优化接口的响应时间,优化了代码之后,但是时间还是达不到要求:有一个 ...

  7. 龙蜥社区成立系统运维SIG,重磅开源sysAK系统运维工具集

    简介:系统运维SIG致力于打造一个集主机管理.配置部署.监控报警.异常诊断.安全审计等一系列功能的自动化运维平台. ​ OpenAnolis 龙蜥社区(以下简称"龙蜥社区")正式成 ...

  8. 阿里云云效发布研发协同工具,以新的产研协同工作方式助力实现BizDevOps

    ​简介:2021云栖大会云效BizDevOps分论坛上,阿里云云效技术负责人陈鑫发布阿里云云效产品研发协同工具支撑ALPD理论,以新的产研协同工作方式助力实现BizDevOps. 编者按:10月21日 ...

  9. 阿里云日志服务SLS,打造云原生时代智能运维

    ​2021年10月21日,阿里云针对企业运维难题,在云栖大会为大家带来了一场<智能运维论坛>的主题演讲.在会上,阿里云资深技术专家.日志服务技术负责人简志提出"云原生时代,企业业 ...

  10. 2021年阿里云年中钜惠攻略,注册即可抽 iPhone 12 Pro 等好礼

    简介: 七月流火,燃情盛夏!值此季节,阿里云又推出了年中钜惠,精选百款产品,助力创业新势力.从7月26日开始,每天上午10点.下午4点将会放出爆款产品,进行限量秒杀,大家不要错过.注册登陆还可抽取 i ...