资讯详情

Redis进阶知识点(可学习,可复习,可面试)

前言: 本文参考和Redis相关的课程,主要讲解了Redis面试中经常问的几个问题,比如Redis主从,Redis哨兵, 若文章中有不准确或需要改进的地方,。 先感谢各位大佬在这里先感谢各位大佬。 在这里插入图片描述

??个人主页:小威想向诸佬学习 ??大家好,我是小威,一个想和大家一起进步的男人 现状:目前大二,在满意的公司实习

??如果老板在准备面试,可以用实习前用的刷神器。 ??欢迎:这是CSDN,欢迎来到我的博客,我亲爱的老板

牛客部分使用反馈,个人感觉很好,帮我找到了最喜欢的公司,我希望你的合作伙伴也能通过它改善很多???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

以下文本开始

文章目录

    • ??Redis集群模式
    • ??Redis主从架构
      • ??全量同步(sync)
      • ??增量同步(psync)
      • ??repl_backlog原理
      • ??同步优化优化
      • ??全量和增量的区别
    • ??Redis哨兵
      • ??Redis集群监控原理
      • ??恢复集群故障

??Redis集群模式

Redis集群模式有三种:。Rdis如果最初使用主从模式作为集群,master停机需要手动配置slave转为master;后来为了在这种模式下,提出了哨兵模式,但它也有一个问题,就是不能动态扩充;所以在3.x提出cluster集群模式。

??Redis主从架构

Redis主从模式支持客户端的高并发性。主从模式是三种模式中最简单的。在主从复制中,数据库分为主数据库(master)和从数据库(slave)。其中,,负责从节点阅读,所有阅读请求都来自节点。 注意主从模式:

1.复制的数据流是单向的,只能从主节点复制到节点。 2. 3.,并且接收主数据库同步过来的数据 4.一个master可以有多个slave,但是一个slave只能对应一个master 5.slave挂了 6.master挂断后,不影响slave的读,但redis不再提供写作服务,master重启后redis将 7.

假设A,B为两个Redis例如,如果你想让B作为A的节点,你需要在B节点上执行命令:

??全量同步(sync)

一般用于第一次复制场景,Redis早期支持的复制功能只有全部复制,主节点的所有数据一次性发送到节点, 判断依据: :简称replid,是数据集的标记,

:偏移量,。slave在完成同步时,还将记录当前同步offset。

因此slave做数据同步,必须向前master声明自己的,master可以判断哪些数据需要同步。

因为,第一次变成slave,与master建立连接时,发送replid和offset是自己的replid和offset。 master判断发现,我知道要做全同步了。

  • slave节点要求增量同步
  • master节点判断replid,
  • master完整的内存数据
  • slave,加载master的RDB
  • master将RDB期间的命令记录在,并持续将log发送命令slave
  • slave执行收到的命令,保持和master之间的同步

??增量同步(psync)

增量同步:用于处理主从复制中网络闪断引起的原因,若条件允许,则从节点再次连接到主节点时,

在Redis 2.8之后,psync数据全量重同步 和 部分重同步模式。

??repl_backlog原理

master怎么知道slave与自己的数据有什么区别?

说到全同步时的全同步repl_baklog文件了。

这个文件是一个固定大小的数组,但数组是环形的,也就是说,这样,数组头部的数据就会被覆盖。

repl_baklog中会记录Redis处理过的命令日志和offset,包括master当前的offset,和slave已复制offset:

slave与master的offset两者的区别是了。

随着数据的不断写入,master的offset逐渐变大,slave也不断的拷贝,追赶master的offset:

直到数组填满: 此时,。然而,只要旧数据是绿色的,这表明它已经同步到slave即使覆盖了数据也没什么影响。因为未同步的仅仅是红色部分。 但是,如果slave出现网络阻塞,导致master的offset远远超过了slave的offset: 如果master继续写入新数据,其offset就会覆盖旧的数据,直到将slave现在的offset也覆盖: 棕色框中的红色部分,就是尚未同步,但是却已经被覆盖的数据。此时如果slave恢复,需要同步,却发现自己的offset都没有了,无法完成增量同步了。只能做全量同步。

🍑主从同步优化

主从同步可以保证主从数据的一致性,非常重要。

可以从以下几个方面来优化Redis主从就集群:

  • 在master中配置repl-diskless-sync yes启用无磁盘复制,避免全量同步时的磁盘IO。
  • Redis单节点上的内存占用不要太大,减少RDB导致的过多磁盘IO
  • 适当提高repl_baklog的大小,发现slave宕机时尽快实现故障恢复,尽可能避免全量同步
  • 限制一个master上的slave节点数量,如果实在是太多slave,则可以采用主-从-从链式结构,减少master压力

🍑全量和增量区别

简述全量同步和增量同步区别?

  • 全量同步:master将完整内存数据生成RDB,发送RDB到slave。后续命令则记录在repl_baklog,逐个发送给slave。
  • 增量同步:slave提交自己的offset到master,master获取repl_baklog中从offset之后的命令给slave

什么时候执行全量同步?

  • slave节点第一次连接master节点时
  • slave节点断开时间太久,repl_baklog中的offset已经被覆盖时

什么时候执行增量同步?

  • slave节点断开又恢复,并且在repl_baklog中能找到offset时

🍈Redis哨兵

哨兵(sentinal)是一个分布式系统,用于对,当出现故障时通过投票机制选择新的 master 并将所有的 slave 连接到新的 master。 哨兵的作用如下:

  • :Sentinel 会不断检查您的master和slave是否按预期工作
  • :如果master故障,Sentinel会将一个slave提升为master。当故障实例恢复后也以新的master为主
  • :Sentinel充当Redis客户端的服务发现来源,当集群发生故障转移时,会将最新信息推送给Redis的客户端

🍌Redis集群监控原理

Sentinel基于心跳机制监测服务状态,每隔1秒向集群的每个实例发送ping命令:

•主观下线:如果某sentinel节点发现某实例未在规定时间响应,则认为该实例

•客观下线:若超过指定数量(quorum)的sentinel都认为该实例主观下线,则该实例

🍌集群故障恢复

一旦发现master故障,,选择依据是这样的:

  1. 然后判断slave节点的slave-priority值,越小优先级越高,
  2. 如果slave-prority一样,则判断slave节点的offset值,越大说明数据越新,优先级越高
  3. 最后是判断slave节点的运行id大小,越小优先级越高。

当选出一个新的master后,该如何实现切换呢?

流程如下:

  1. sentinel给备选的slave1节点发送slaveof no one命令,让该节点成为master
  2. sentinel给所有其它slave发送slaveof 192.168.150.101 7002 命令,让这些slave成为新master的从节点,开始从新的master上同步数据。
  3. 最后,sentinel将故障节点标记为slave,当故障节点恢复后会自动成为新的master的slave节点

Sentinel的三个作用是什么?

  • 监控
  • 故障转移
  • 通知

Sentinel如何判断一个redis实例是否健康?

  • 每隔1秒发送一次ping命令,

故障转移步骤有哪些?

  • 首先选定一个slave作为新的master,执行slaveof no one(永不为奴😏)
  • 然后让所有节点都执行slaveof 新master
  • 修改故障节点配置,添加slaveof 新master

文章到这里就结束了,如果有什么疑问的地方请指出,诸佬们一起讨论🍻 最后再次给大家安利一波牛客,点击刷题神器 注册牛客,快来和博主一起刷题吧嘿嘿嘿👏 再次感谢各位小伙伴儿们的支持🤞

标签: 2a振动变送器psxzd

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台