3/11Redis学习下

6.他们之间有什么优缺点

RDB

优点:1.使用二进制压缩包文件,内容更小。2.容量小,启动速度快

缺点:实时性较差,会出现数据丢失的问题,版本不兼容,老的redis可能不支持rdb文件

AOF:

优点:实时性好,可以同appendSYnc,设置always,每一次操作都会记录到文件中。

缺点:容量相较于rdb比较大,启动速度比较慢,恢复速度慢

7.RBD和AOF选择哪个

目前主流是AOF,如果数据具有同步性实时性高,则推荐aof,如果实例小,可以接受一段时间的数据丢失则使用rdb。如果只追求运行时数据存在,则无需配置。

8. redis的数据恢复

1.是否配置了aof,然后配置,优先选择aof

2.当aof不存在时,配置rdb

3.redis加载aof/rdb,redis启动成功

4.启动失败,redis进行失败日志输出。

9.Redis 4.0 的混合持久化了解吗?

重启 Redis 时,我们很少使用 RDB 来恢复内存状态,因为会丢失大量数据。我们通常使用 AOF 日志重放,但是重放 AOF 日志性能相对 RDB 来说要慢很多,这样在 Redis 实例很大的情况下,启动需要花费很长的时间。

Redis 4.0 为了解决这个问题,带来了一个新的持久化选项——混合持久化。将 rdb 文件的内容和增量的 AOF 日志文件存在一起。

这里的 AOF 日志不再是全量的日志,而是 自持久化开始到持久化结束 的这段时间发生的增量 AOF 日志,通常这部分 AOF 日志很小.

于是在 Redis 重启的时候,可以先加载 rdb 的内容,然后再重放增量 AOF 日志就可以完全替代之前的 AOF 全量文件重放,重启效率因此大幅得到提升。

10.主从复制的概念

将一台redis的数据,拷贝到其他redis节点上,前者是主节点,后者则是从节点,且数据是单向的,即支持主节点向从节点发送消息,支持从节点给从节点发送信息。

11.主从复制的主要作用

(1)数据冗余:实现数据的热备份,是除了数据持久化之外的一种数据冗余方式。

(2)故障恢复:当主节点出现故障的时候,从节点可以提高服务,实现数据的快速的恢复

(3)负载均衡,在主从复制的基础上,实现读写分离,主节点负责写操作,从节点负责读操作,适用于读多写少的情况,提高redis的并发能力。

(4)高可用 ,主从复制是redis的哨兵和集群实现的基础,是redis高可用的基础。

12、redis有哪些结构

(1)一对一的数据结构,从节点负责在主节点多宕机的时候,提高故障转移支持‘

(2)一对多,也叫星型,一个主节点对应多个从节点,利用从节点实现读写分离,提高redisde1并发能力

(3)多对多也叫树形。使得从节点不但可以复制拷贝主节点的数据,还支持从从复制,将数据拷贝到字节的下一个从节点里面。有助于负载均衡操作。

13.Redis的主从复制的原理

(1)先获取主节点的配置信息,如果port和id

(2)从节点与主节点进行socket连接

(3)从节点发送ping请求,主要检测:网络可用性和网络套接字是否可以

(4)如果主节点存在验证信息,则进行权限认证

(5)主节点会把数据拷贝给从节点

(6)然后主节点会持续写命令发给从节点,保证数据一致性。

14.Redis数据同步

redis分为全部复制和部分复制,当redis进行全部同步时,则是将redis的全部数据都同步给从节点,导致时间长,对网络产生了很大的开销。所以后期引入了部分复制。

(1)全部复制的流程

  • 发送psync指令进行数据同步,由于是第一次数据拷贝,则从节点没有复制偏移量和主节点的id,则发送psync -1

  • 主节点接收到psync-1,则知道系统要做的是全量复制,触发、、回复,fullresync响应。

  • 从节点接收到了主节点的响应数据,然后保存运行id和偏移量offset

  • 主节点执行bgsave保保存rdb到本地

  • 主节点将rdb发送给从节点,然后发送给从节点,从节点接收后,保存本地,然后齿执行rdb文件

  • 从节点接收到rdb快照到接收完成期间,主节点仍然响应用户的请求,这时候,主节点则会将指令暂放缓冲区,等从节点加载完rbd之后,则将缓冲区的数据发送给从节点,

  • 从节点接收到主节点发送的数据后,则会将自身数据清空

  • 然后执行rdb文件

  • 如果加载完毕之后,用户开启了aof持久化操作,则会立即作bgrewriteaod操作,保证全量复制后的aof问年间立即可用

(2)部分复制

针对于全量复制的高消费,我们提除了部分复制。当从从节点对主节点进行复制,出现了网络异常等操作,导致信息中断后,从节点会要求主节点从发那些没有接收到的数据,如果主节点的复制缓冲区有这个数据则直接发送。

过程

  • 当网络中断或者是数据丢失后,时间超过repl-timeout时间,主节点则会主动向中断的从节点进行数据恢复

  • 主从连接中断后,但主节点依然响应数据,他会把数据放在复制缓存区,默认最大缓存1mb

  • 当从节点恢复,连接主节点后

  • 从节点上一次数据的id和offset便宜量,因此会把它们当作 psync 参数发送给主节点,要求进行部分复制操作。

  • 主节点接收到了psync后,判断runid是否和自己一致,如果是,则是请求的自己。然后通过偏移量,查找缓冲区,如果存在,则主节点发送+continue响应,积极性部分复制

  • 主节点根据偏移量把复制积压缓冲区里的数据发送给从节点,保证主从复制进入正常状态

15、主从复制的问题

(1)当主节点宕机后,需要手动配置节点充当主节点,需要修改主节点的地址,还要命令其他从节点去复制主节点。需要人工干预

(2)受到写单机操作的限制

(3)受到存储单机操作的限制

16、哨兵的组成和功能

sentinal 分为哨兵节点和数据节点,哨兵节点不进行任何的数据存储,只负责监控数据节点,定期发送请求,判断节点是否运行正常

数据节点则是以前的主节点和从节点。

功能分为:

(1)监控:哨兵会不断向数据节点发送请求,判断数据节点是否正常运行,

(2)自动故障转移,当主节点宕机时,哨兵节点会自动开始故障转移,会从从节点中,选择一个上升为主节点,并且通知其他从节点去复制该节点

(3)客户端初始化的时候,可以通过连接哨兵得到redis主节点的id

(4)哨兵可以通知故障转移结果给客户端

17、哨兵节点的原理

(1)10s会定期向数据节点发送info命令,获取最新的拓扑结构

(2)2s每一个sentinel,会向redis数据节点的sentinel:hello频道上发送该节点sentinel对主节点的判断和而当前sentinel的状态

(3)1sentinel节点向数据节点、从节点,其他sentinel节点发送ping请求看是否可达

18 、哨兵机制

领带者sentinel选拔:每一个在线的sentinel都可以参与选拔,收到命令的sentinel,如果没有同意其他sentinel的选拔,则同意请求,否则拒绝,选票数量》=max(qunorum,(senutinek;)/2+1);然后没有选出来继续下一轮

主从节点的选择:

  • 过滤掉不健康的节点

  • 选择slave-priority(从节点)优先级最高的

  • 选择offert增量最大的,即拷贝数据最多的从节点

  • 选择runid最小的从节点。

Redis集群

  • 数据分区:每一个都是单独的节点,都具有读写的操作,减轻了单个redis的压力,提高了响应熟读,同时集群将数据分散到多个节点,突破了redis单机内存限制,容量增加了

  • 高可用:提高了故障转移技术,类似于哨兵,当其中一节点宕机,依然可用。

  • 21
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值