栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java面试题整理《redis篇》七

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java面试题整理《redis篇》七

Redis集群方案

主从复制(主数据库读写,从数据库只读)

通过执行slaveof命令或设置slaveof选项,让上一个服务器去复制另一个的服务器的数据。主数据库可以进行读写操作,当写操作导致数据变化时会自动将数据同步给从数据库,而从数据库一般是只读的,并接受主数据库同步过来的数据,一个主数据库可以拥有多个从数据库,而一个从数据库只能拥有一个主数据库。

全量复制:

主节点通过 bgsave命令fork子进程进行RDB持久化,该过程是非常消耗CPU、内存(表复制)、硬盘IO的

主节点通过网络将RDB文件发送给从节点,对主从节点的带宽都会带来很大的消耗

从节点消空老数据、载入新RDB文件的过程是阳塞的,无法响应客户端的命令;如果从节点执行bgrewriteaof,也会带来额外的消耗

部分复制:

复制制移量:执行复制的双方,主从节点,分别会维护个复制偏移量offset

复制积压缓冲区:主技点内部维护了一个固定长度的、先进先出(队列作为复制积压缓冲区,当主从节点offset的差距过大超过缓冲区长度时,将无法执行部分复制,只能执行全量复制

服务器运行ID( runid):每个 Redis节点,都有其运行ID,运行ID由节点在启动时自动生成,主节点会将自己的运行ID发送给从节点,从节点会将主节点的运行ID存起来。从节点 Redis断开重连的时候,就是根据运行ID来判断同步的进度

如果从节点保存的 runid与主节点现在的 runid相同,说明主从节点之前同步过,主节点会继续尝试使用部分复制(到底能不能部分复制还要看 offset和复制积压缓冲区的情况);

如果从节点保存的 runid与主节点现在的rund不同,说明从节点在断线前同步的 Redis节点并不是当前的主节点,只能进行全量复制过程原理

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/988094.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号