【Redis笔记01】Redis环境搭建之单机模式和主从模式

有目标就不怕路远。年轻人.无论你现在身在何方.重要的是你将要向何处去。只有明确的目标才能助你成功。没有目标的航船.任何方向的风对他来说都是逆风。因此,再遥远的旅程,只要有目标.就不怕路远。没有目标,哪来的劲头?一车尔尼雷夫斯基

导读:本篇文章讲解 【Redis笔记01】Redis环境搭建之单机模式和主从模式,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

这篇文章,主要介绍Redis环境搭建之单机模式和主从模式。

目录

一、单机模式和主从模式

1.1、单机模式

1.2、主从模式

(1)主从模式原理

(2)主从模式搭建

1.3、主从复制(数据同步)

(1)建立连接阶段

(2)数据同步阶段

(3)命令传播阶段


一、单机模式和主从模式

Redis是一个采用C语言编写的,高性能的key-value键值对的内存型数据库,每秒读写可以达到10万次。Redis的运行环境大概有四种方式,分别是:单机模式、主从模式、哨兵模式、集群模式。

1.1、单机模式

Redis单机模式是最简单的运行环境,只需要下载一个Redis服务,启动即可。Redis可以去【https://github.com/tporadowski/redis/releases】下载对应版本。下面完成之后,解压目录如下所示:

【Redis笔记01】Redis环境搭建之单机模式和主从模式

单机模式下,windows系统中只需要运行【redis-server.exe】文件,就能够启动redis服务。

【Redis笔记01】Redis环境搭建之单机模式和主从模式

以上,就是Redis的单机模式,只有一台Redis服务运行。

单机模式的缺点:

  • 当存在大量读写请求的时候,一台Redis服务可能会处理不过来。
  • 当单机的Redis服务宕机或者故障之后,那么整个应用系统就无法使用了。

1.2、主从模式

(1)主从模式原理

主从模式是采用的【读写分离】的思想,一台Redis服务专门用于对外提供写操作,支持写操作的Redis服务叫做:master结点;其他Redis服务对外提供读操作,只能够读的Redis服务叫做:slave从节点。主从模式架构图大致如下所示:

【Redis笔记01】Redis环境搭建之单机模式和主从模式

主从模式下,可以是【1对N】的模式,也可以是【树状】的模式,一般实际中,都是采用【1对N】的模式,而不会采用【树状】模式。

主从模式,在一定程度上,提高可服务的可用性,当master主结点宕机之后,slave从结点仍然可以对外提供读服务,只不过系统中的写操作不可用。

(2)主从模式搭建

这搭建一个【1主2从】的模式,需要启动三个Redis服务,一个master主结点,两个slave从结点。

Redis主从模式
结点名称 IP地址 端口
master主结点 127.0.0.1 6379
slave从结点 127.0.0.1 6380
slave从结点 127.0.0.1 6381

  • 搭建master主结点:复制一份redis的配置文件,名称叫做:redis6379.conf,修改端口为:6379。
# 启动master结点
redis-server.exe redis6379.conf

如下所示:

【Redis笔记01】Redis环境搭建之单机模式和主从模式

  •  搭建slave从结点:复制一份redis的配置文件,名称叫做:redis6380.conf,修改端口为:6380。
  •  搭建slave从结点:复制一份redis的配置文件,名称叫做:redis6381.conf,修改端口为:6381。

上面两个slave从结点配置文件中,添加【slaveof <masterip> <masterport>】命令,用于配置关联的主结点。其中<masterip>表示主结点的IP地址,<masterport>表示主结点的端口(注意:如果想取消主从关系,可以使用【slaveof no one】命令)。

# 从结点关联master主结点
slaveof 127.0.0.1 6379

分别启动两个从结点,如下所示:

【Redis笔记01】Redis环境搭建之单机模式和主从模式

  • 连接master主结点【redis-cli.exe -h 127.0.0.1 -p 6379】,执行一个写命令。

【Redis笔记01】Redis环境搭建之单机模式和主从模式

  • 查看两个slave从结点中是否存在刚刚写入的数据。

【Redis笔记01】Redis环境搭建之单机模式和主从模式

 到此,Redis的主从模式就搭建好啦。

1.3、主从复制(数据同步)

主从模式下,master主结点能够提供【读、写操作】,但是slave从结点只能够提供【读操作】,如果进行写操作,则会报错。那么master和slave主从结点是如何保证数据一致性的呢???

主从模式下,数据是最先进入到master主结点,所以为了保证slave从结点也拥有相同的数据,这个时候,就需要将master主结点中的数据,复制一份到所有的slave从结点里面。

主从复制三个步骤:

  • 第一步:master和slave建立【通信连接阶段】。
  • 第二步:master和slave进行【数据同步阶段】。
  • 第三步:master和slave进行【命令传播阶段】。

(1)建立连接阶段

slave从结点在启动的时候,会根据配置文件中的【slaveof】信息,向master主结点建立socket连接,当socket连接建立成功之后,此时master和slave主从结点就可以正常通信啦。

为了保证主从结点之间通信的稳定性,slave从结点会周期性的向master主结点发送ping命令,如果master结点给slave从结点响应PONG,那就说明master和slave结点之间通信是正常的。

如果设置了访问密码,这个时候还需要进行身份验证,验证通过之后,此时master和slave主从结点就可以进行数据同步复制啦。

【Redis笔记01】Redis环境搭建之单机模式和主从模式

可以通过【info Replication】命令,查看结点的主从复制信息。

(2)数据同步阶段

上一个步骤已经保证了master和slave是可以正常通信的了,但是这个时候master和slave中的数据还不是一致的,所以还需要将master中的数据复制到slave里面,slave从结点向master结点发送psync命令,进行数据同步。这里有两种复制方式:【全量复制】和【增量复制】。

  • 全量复制

slave向master发送psync命令进行全量复制,master接收到全量复制请求之后,此时就会开启一个缓冲区,缓存区记录此刻新进来的写命令操作,并且执行bgsave命令,在后台生成RDB文件,将生成的RDB文件发送给slave结点,slave结点接收到RDB结点,首先会清除slave结点中的数据,然后执行bgsave命令导入RDB文件的数据。此外,RDB文件恢复完成之后,发送命令给master结点,master会将缓冲区中的所有命令发送给slave结点,slave结点执行这些命令完成数据的同步。

  • 增量复制

全量复制太消耗性能了,所以Redis提出了增量复制,增量复制就是每次只复制一部分数据。

TODO:原理待补充。

(3)命令传播阶段

第二个步骤已经将master和slave结点的数据进行了同步,但是同步过程难免会出现这种情况,即:数据刚刚同步完成,但是此时又有新的写命令执行了,此时就需要继续将master中新写入的数据复制到slave结点里面,这个过程就是采用的:命令传播机制,master结点会将新的写命令传播给slave结点,然后slave结点执行写命令,完成数据同步。

到此,Redis中的单机模式和主从模式就介绍完啦。

综上,这篇文章结束了,主要介绍Redis环境搭建之单机模式和主从模式。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/134487.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!