这篇文章,主要介绍Redis环境搭建之单机模式和主从模式。
目录
一、单机模式和主从模式
Redis是一个采用C语言编写的,高性能的key-value键值对的内存型数据库,每秒读写可以达到10万次。Redis的运行环境大概有四种方式,分别是:单机模式、主从模式、哨兵模式、集群模式。
1.1、单机模式
Redis单机模式是最简单的运行环境,只需要下载一个Redis服务,启动即可。Redis可以去【https://github.com/tporadowski/redis/releases】下载对应版本。下面完成之后,解压目录如下所示:
单机模式下,windows系统中只需要运行【redis-server.exe】文件,就能够启动redis服务。
以上,就是Redis的单机模式,只有一台Redis服务运行。
单机模式的缺点:
- 当存在大量读写请求的时候,一台Redis服务可能会处理不过来。
- 当单机的Redis服务宕机或者故障之后,那么整个应用系统就无法使用了。
1.2、主从模式
(1)主从模式原理
主从模式是采用的【读写分离】的思想,一台Redis服务专门用于对外提供写操作,支持写操作的Redis服务叫做:master结点;其他Redis服务对外提供读操作,只能够读的Redis服务叫做:slave从节点。主从模式架构图大致如下所示:
主从模式下,可以是【1对N】的模式,也可以是【树状】的模式,一般实际中,都是采用【1对N】的模式,而不会采用【树状】模式。
主从模式,在一定程度上,提高可服务的可用性,当master主结点宕机之后,slave从结点仍然可以对外提供读服务,只不过系统中的写操作不可用。
(2)主从模式搭建
这搭建一个【1主2从】的模式,需要启动三个Redis服务,一个master主结点,两个slave从结点。
结点名称 | 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
如下所示:
- 搭建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
分别启动两个从结点,如下所示:
- 连接master主结点【redis-cli.exe -h 127.0.0.1 -p 6379】,执行一个写命令。
- 查看两个slave从结点中是否存在刚刚写入的数据。
到此,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主从结点就可以进行数据同步复制啦。
可以通过【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