likes
comments
collection
share

Redis主从结构搭建

作者站长头像
站长
· 阅读数 16

主从模式的搭建

环境说明 windows11下安装的linux子系统wsl2,版本是Ubuntu22.04

  1. redis下载/解压/编译

由于redis官网下载需要使用他的cloud,好像要登陆啥的,直接一顿github源码下载一顿梭哈。

wget https://github.com/redis/redis/archive/refs/tags/7.2.5.tar.gz
tar zxvf 7.2.5.tar.gz
cd redis-7.2.5 
make
cd src
make install
  1. 修改主从的配置文件

从redis解压的主目录中拷贝redis.conf文件,拷贝三份,分别是一主两从,重命名redis.conf1,redis.conf2,redis.conf3,并修改配置文件中部分配置。以下列举的都是修改的配置。

redis.conf1

# 让所有主机都能连接redis服务
bind 0.0.0.0 

# 保护模式关闭,非回环地址也能连接redis服务
protected-mode no

# 由于是单个机器,所以就采用不同端口,后面的从节点会改变这个值
port 6379

# 后台运行
daemonize yes

# 跟随port
pidfile /var/run/redis_6379.pid

# 日志文件
logfile "/data/logs/log1"

redis.conf2

# 让所有主机都能连接redis服务
bind 0.0.0.0 

# 保护模式关闭,非回环地址也能连接redis服务
protected-mode no

# 由于是单个机器,所以就采用不同端口,后面的从节点会改变这个值
port 6380

# 后台运行
daemonize yes

# 跟随port
pidfile /var/run/redis_6380.pid

# 日志文件
logfile "/data/logs/log2"

# 这里配成自己本机的IP地址,指向第一台master节点
replicaof xxx.xxx.xxx.xxx 6379

redis.conf3

# 让所有主机都能连接redis服务
bind 0.0.0.0 

# 保护模式关闭,非回环地址也能连接redis服务
protected-mode no

# 由于是单个机器,所以就采用不同端口,后面的从节点会改变这个值
port 6381

# 后台运行
daemonize yes

# 跟随port
pidfile /var/run/redis_6381.pid

# 日志文件
logfile "/data/logs/log3"


# 这里配成自己本机的IP地址,指向第一台master节点
replicaof xxx.xxx.xxx.xxx 6379
  1. 运行起来

为了能方便启动和关闭,写了个脚本启动和关闭

启动脚本

sudo ./redis-server redis.conf1
sudo ./redis-server redis.conf2
sudo ./redis-server redis.conf3

关闭脚本

sudo ps -ef|grep redis|awk '{print $2}'|xargs sudo kill
  1. 验证

使用了一个可视化客户端工具AnotherRedisDesktopManager 下载链接如下: gitee.com/qishibo/Ano…

打开后连接master节点

Redis主从结构搭建

连接slave节点

Redis主从结构搭建

master节点添加一个key

Redis主从结构搭建

查看slave节点有没有同步复制过去

Redis主从结构搭建

以上,主从模式完成搭建,功能正常

主从模式的原理和分析

主从复制是如何实现的? 主从复制包括全量复制和增量复制。 全量复制:

  1. 新slave节点加入,slave节点会发送一个psync命令给master节点。
  2. master节点接收到psync指令之后,执行bgsave命令,生成一个快照。期间执行的写命令会添加到缓冲区中,后面发给slave。
  3. 生成快照之后,会把快照文件发送给slave节点,期间执行的写命令会添加到缓冲区中。
  4. slave节点接收到快照文件,会存储到磁盘中,随后清除旧数据,并把快照文件载入到内存中。
  5. master同时会把缓冲区的命令发送给slave节点,当slave节点完成快照的载入,就会逐个执行master发送过来的写命令。

增量复制: 增量复制就是当slave节点连接上后,完成全量复制,就会进行增量同步。当master节点执行了一个写命令,完成操作之后,会把写命令发给slave节点,slave节点接收到信息后也会执行该命令。这就是增量复制。

单节点有什么问题?

  • redis单节点都能支持10w并发,固然强大,但是单节点cpu、内存、网络等资源有限,总会有一个上限,无法支撑更多的并发。
  • 单节点不能做到高可用,单兵作战,当该节点挂了就没有办法正常提供服务了。

主从复制有什么好处呢?

  • 数据冗余
  • 故障恢复
  • 负载均衡

主从复制有什么缺点呢?

  • 时延:主从复制之间会存在复制的动作,会存在一定的时延,而且slave节点越多,时延问题越严重。
  • 同步过程会消耗额外资源。同步会消耗额外的资源,会有一定的吞吐量降低
  • 不能自己故障切换,需要人工介入,或者哨兵模式。
转载自:https://juejin.cn/post/7385373226875256847
评论
请登录