《面试1v1》Redis主从架构

这篇具有很好参考价值的文章主要介绍了《面试1v1》Redis主从架构。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

🍅 作者简介:王哥,CSDN2022博客总榜Top100🏆、博客专家💪
🍅 技术交流:定期更新Java硬核干货,不定期送书活动
🍅 王哥多年工作总结:Java学习路线总结, 点击 突击面试
🍅 数十万人的面试选择: 面试说人话系列《面试1v1》

《面试1v1》Redis主从架构

我是 javapub,一名 Markdown 程序员从👨‍💻,八股文种子选手。


《面试1v1》 连载中…


我是 javapub,一名 Markdown 程序员从👨‍💻,八股文种子选手。

面试官: Redis主从架构是什么?它有什么用?

候选人: Redis 主从架构就是将一台 Redis 服务器设为主服务器,其他的 Redis 服务器设为从服务器。它的主要用途有:

  1. 高可用:当主服务器发生故障时,从服务器可以顶上继续提供服务,实现快速故障迁移。
  2. 负载均衡:主服务器处理写请求,从服务器处理读请求,分担服务器压力。
  3. 数据冗余:主服务器的数据可以在从服务器中备份,防止数据丢失。

面试官: Redis 主从复制的工作流程是怎样的?

候选人: Redis 主从复制的工作流程如下:

  1. 首次同步:从服务器连接主服务器,发送 sync 命令,主服务器执行 BGSAVE 生成 RDB 文件并发送给从服务器,从服务器载入 RDB 文件并获得数据集。同时主服务器也发送从服务器连接后产生的写命令给从服务器,使其状态与主服务器一致。
  2. 命令传播:主服务器继续接收写命令,并将写命令同步给从服务器。主从服务器保持数据一致。
  3. 断线重连:如果从服务器因网络故障与主服务器断开,会自动尝试重连。重连后再次执行同步操作,得到主服务器最新的数据。

主要的工作流程是:同步阶段+命令传播阶段,这两个阶段互相循环,实现主从复制和数据一致性的效果。

面试官: 主从复制的同步工作是如何实现的?能给出源码分析吗?

候选人: 主从复制的同步工作是在 replicaofCommand() 方法中实现的:

void replicaofCommand(client *c) {
    if (server.masterhost == NULL) { //如果是第一次同步
        server.master = createClient(NULL); //连接主机
        if (server.master == NULL) {
            addReplyError(c,"Can't connect to MASTER: Connection refused");
            return;
        }
        /* AUTH with the master if required. */
        if (server.masteruser && server.masterauth) {
            ...
        }
        /* Send SYNC and receive BGSAVE response. */
        server.replstate = REDIS_REPL_WAIT_BGSAVE_START; 
        serverLog(REDIS_NOTICE,"Waiting BGSAVE from master");
        if (syncWithMaster() != REDIS_OK) {  // 发送sync命令
            freeClient(server.master);        
            server.master = NULL;
        }
    } 
}

同步工作的流程如下:

  1. 从服务器连接主服务器,发送 sync 命令。
  2. 主服务器接收到 sync 命令,执行 BGSAVE,同时开始缓冲从服务器断开期间产生的写命令。
  3. BGSAVE 完成,主服务器将 RDB 文件发送给从服务器,同时也发送缓冲的写命令。
  4. 从服务器得到 RDB 文件后载入,执行写命令,数据同步完成。

这整个同步过程可以保证从服务器快速获取主服务器的数据,也为后续的命令传播阶段奠定基础,主从复制得以顺利进行。

面试官: 主从复制的同步实现,你解释得很详细,我现在全明白了!Redis 的主从架构以及同步原理,你都理解得非常透彻。

《面试1v1》Redis主从架构

最近我在更新《面试1v1》系列文章,主要以场景化的方式,讲解我们在面试中遇到的问题,致力于让每一位工程师拿到自己心仪的offer,感兴趣可以关注JavaPub追更!


《面试1v1》 连载中…


🎁目录合集:

Gitee:https://gitee.com/rodert/JavaPub

GitHub:https://github.com/Rodert/JavaPub

http://javapub.net.cn文章来源地址https://www.toymoban.com/news/detail-512555.html

到了这里,关于《面试1v1》Redis主从架构的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 《面试1v1》Spring基础

    🍅 作者简介:王哥,CSDN2022博客总榜Top100🏆、博客专家💪 🍅 技术交流:定期更新Java硬核干货,不定期送书活动 🍅 王哥多年工作总结:Java学习路线总结, 点击 突击面试 🍅 数十万人的面试选择: 面试说人话系列《面试1v1》 我是 javapub,一名 Markdown 程序员从👨‍💻,

    2024年02月10日
    浏览(29)
  • 《面试1v1》Kafka基础

    🍅 作者简介:王哥,CSDN2022博客总榜Top100🏆、博客专家💪 🍅 技术交流:定期更新Java硬核干货,不定期送书活动 🍅 王哥多年工作总结:Java学习路线总结, 点击 突击面试 🍅 数十万人的面试选择: 面试说人话系列《面试1v1》 我是 javapub,一名 Markdown 程序员从👨‍💻,

    2024年02月13日
    浏览(28)
  • 《面试1v1》ElasticSearch基础

    🍅 作者简介:王哥,CSDN2022博客总榜Top100🏆、博客专家💪 🍅 技术交流:定期更新Java硬核干货,不定期送书活动 🍅 王哥多年工作总结:Java学习路线总结, 点击 突击面试 🍅 数十万人的面试选择: 面试说人话系列《面试1v1》 我是 javapub,一名 Markdown 程序员从👨‍💻,

    2024年02月12日
    浏览(27)
  • 《面试1v1》java注解

    我是 javapub,一名 Markdown 程序员从👨‍💻,八股文种子选手。 面试官 :接下来,聊聊Java的注解,它们到底有什么用? 候选人: 注解的用处主要三个: 第一个,编译期使用。比如@Override确保你正确重写了方法,@Deprecated表示这个方法以后可能会删掉。 第二个,运行期使用。很多框

    2023年04月23日
    浏览(31)
  • 《面试1v1》java多线程

    我是 javapub,一名 Markdown 程序员从👨‍💻,八股文种子选手。 面试官 : 说说你对多线程的理解? 候选人: 多线程就是同时运行多个线程,实现一件事的并行处理。比如开个程序,同时下载多个文件,同时处理多个客户端请求等等。 面试官 :那什么是线程安全的?举个例子? 候选

    2024年02月02日
    浏览(32)
  • 《面试1v1》ElasticSearch倒排索引

    🍅 作者简介:王哥,CSDN2022博客总榜Top100🏆、博客专家💪 🍅 技术交流:定期更新Java硬核干货,不定期送书活动 🍅 王哥多年工作总结:Java学习路线总结, 点击 突击面试 🍅 数十万人的面试选择: 面试说人话系列《面试1v1》 我是 javapub,一名 Markdown 程序员从👨‍💻,

    2024年02月13日
    浏览(30)
  • 《面试1v1》ElasticSearch 和 Lucene

    🍅 作者简介:王哥,CSDN2022博客总榜Top100🏆、博客专家💪 🍅 技术交流:定期更新Java硬核干货,不定期送书活动 🍅 王哥多年工作总结:Java学习路线总结, 点击 突击面试 🍅 数十万人的面试选择: 面试说人话系列《面试1v1》 我是 javapub,一名 Markdown 程序员从👨‍💻,

    2024年02月14日
    浏览(34)
  • 《面试1v1》大厂的Kafka使用场景

    🍅 作者简介:王哥,CSDN2022博客总榜Top100🏆、博客专家💪 🍅 技术交流:定期更新Java硬核干货,不定期送书活动 🍅 王哥多年工作总结:Java学习路线总结, 点击 突击面试 🍅 数十万人的面试选择: 面试说人话系列《面试1v1》 我是 javapub,一名 Markdown 程序员从👨‍💻,

    2024年02月16日
    浏览(33)
  • 《面试1v1》G1垃圾回收器

    我是 javapub,一名 Markdown 程序员从👨‍💻,八股文种子选手。 面试官 : G1垃圾收集器?听说很牛逼的样子! 候选人: 是的,G1是JDK9默认的垃圾收集器,代替了CMS收集器。它的目标是达到更高的吞吐量和更短的GC停顿时间。 面试官 : 听你一说,我就不高兴了!G1到底好在哪儿? 候选

    2024年02月08日
    浏览(37)
  • 《面试1v1》Kafka的ack机制

    🍅 作者简介:王哥,CSDN2022博客总榜Top100🏆、博客专家💪 🍅 技术交流:定期更新Java硬核干货,不定期送书活动 🍅 王哥多年工作总结:Java学习路线总结, 点击 突击面试 🍅 数十万人的面试选择: 面试说人话系列《面试1v1》 我是 javapub,一名 Markdown 程序员从👨‍💻,

    2024年02月14日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包