redis主从复制和哨兵模式

主从复制概扩及原理

Redis主从复制是指将一个Redis实例(即主库)的数据复制到其他Redis实例(即从库)的过程。主节点负责写入数据,从节点负责读取数据,从而实现数据的高可用性和负载均衡。
原理: 主从复制的原理如下:

  1. 从节点连接主节点并发送SYNC命令,请求复制主节点的数据。

  2. 主节点接收到SYNC命令后,开始执行BGSAVE命令,将当前内存中的数据持久化到磁盘上,并将生成的RDB文件发送给从节点。

  3. 从节点接收到RDB文件后,将其加载到内存中,并向主节点发送PSYNC命令,请求继续复制主节点的数据。

  4. 主节点接收到PSYNC命令后,开始将内存中的数据发送给从节点,并记录从节点接收到的最后一个数据的偏移量。

  5. 从节点接收到数据后,将其存储到自己的内存中,并向主节点发送ACK命令,表示已经接收到数据。

  6. 主节点接收到ACK命令后,继续向从节点发送数据,直到从节点和主节点的数据完全一致。

  7. 从节点定期向主节点发送PING命令,以检测主节点是否宕机或网络是否异常。

  8. 如果主节点宕机或网络异常,从节点会重新连接主节点或者连接其他从节点,成为新的主节点。

通过主从复制,可以实现Redis的高可用性和负载均衡,同时也可以提高Redis的读取性能。

在这里插入图片描述

redisi主从复制模式

准备环境 3台虚拟机
192.168.1.10master主库
192.168.1.9slave1从库
192.168.1.8slave2从库
1.三个都按照redis

yum -y install redis

2.编辑master主库

vim /etc/redis.conf
bind 0.0.0.0
daemonize yes
port 6379 
pidfile /var/run/redis_6379.pid

启动服务

systemctl start redis

3.编辑slave1、slave2从库(配置一致)

vim /etc/redis.conf
bind 0.0.0.0
daemonize yes
port 6379 
pidfile /var/run/redis_6379.pid
slaveof 192.168.1.10 6379

启动服务

systemctl start redis

主库测试
在这里插入图片描述
从库测试
在这里插入图片描述在这里插入图片描述

redis哨兵原理

Redis哨兵是一种特殊的Redis进程,它的主要作用是监控Redis主从节点的状态,并在主节点出现故障时自动将从节点升级为主节点,从而保证Redis集群的高可用性。
原理:

  1. 哨兵通过向主节点和从节点发送PING命令来监控它们的状态,如果哨兵在指定的时间内没有收到节点的回复,则认为该节点已经失效。

  2. 当哨兵检测到主节点失效时,它会向其他哨兵发送通知,请求进行故障转移操作。

  3. 哨兵集群中的所有哨兵会进行投票,选出一个哨兵作为领导者,负责执行故障转移操作。

  4. 领导者哨兵会向所有从节点发送SLAVEOF命令,将它们升级为主节点,并将新的主节点的信息广播给其他哨兵和客户端。

  5. 客户端会根据哨兵广播的信息,重新连接到新的主节点上,从而实现Redis集群的高可用性。

总之,Redis哨兵通过监控节点状态、自动切换主从节点、广播新主节点信息等方式,保证了Redis集群的高可用性和数据一致性。

在这里插入图片描述

redis哨兵模式

在主从复制的基础环境下通过编辑 redis-sentinel.conf 完成
1.master主库、slave1、slave2从库编辑

 vim /etc/redis-sentinel.conf 

protected-mode no
port 26379
daemonize yes
sentinel monitor mymaster 192.168.1.10 6379 2

3台虚拟机重启服务,并开启哨兵模式

systemctl restart redis
systemctl restart redis-sentinel

目前主库、slave1、slave2从库状况

在这里插入图片描述在这里插入图片描述在这里插入图片描述当主库宕机时,slave1、slave2从库的状况

systemctl stop redis

slave1状况
在这里插入图片描述并且主配置文件也发生了一些变化

client-output-buffer-limit normal 0 0 0表示普通客户端的输出缓冲区限制为0,即没有限制
client-output-buffer-limit slave 256mb 64mb
60表示从节点的输出缓冲区限制为256MB,当缓冲区使用率达到64MB时开始发送警告,警告时间为60秒
client-output-buffer-limit pubsub 32mb 8mb
60`:表示发布/订阅客户端的输出缓冲区限制为32MB,当缓冲区使用率达到8MB时开始发送警告,警告时间为60秒
这些命令可以帮助控制Redis客户端的输出缓冲区大小,防止客户端发送过多的数据导致Redis服务器的性能下降

在这里插入图片描述

slave2状况

总结:单master宕机后,slave1和slave2随机一个slave1接替master,另一个slave2成为新的master从库。Redis哨兵在Redis集群环境中发挥了重要的作用,它可以有效提高Redis服务器的可靠性和稳定性,帮助监控Redis服务器的工作状态,并自动完成高可用的故障转移操作。因此,许多Redis用户都会安装Redis哨兵,以保证自己的Redis服务器的安全可靠

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值