Redis 核心技术与实战
蒋德钧
中科院计算所副研究员
81696 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 53 讲
开篇词 (1讲)
实践篇 (28讲)
Redis 核心技术与实战
15
15
1.0x
00:00/00:00
登录|注册

10 | 第1~9讲课后思考题答案及常见问题答疑

采用渐进式hash时,如果实例暂时没有收到新请求,是不是就不做rehash了?
Redis什么时候做rehash?
元数据查询
调试模块
通知模块
统计模块
高可用集群
集群化
主从复制
数据淘汰策略
过期机制
支持数据压缩
丰富的数据类型
事务性
功能扩展
内存利用率
内存安全性
横向扩展
高可用
数据结构
问题4:replication buffer和repl_backlog_buffer的区别
问题3:写时复制的底层实现机制
问题2:主线程、子进程和后台线程的联系与区别
问题1:rehash的触发时机和渐进式执行机制
原因
风险二
风险一
Redis“又快又省”特点
Kaito同学
曾轼麟同学
典型问题讲解
问题:为什么Redis不直接用一个表,把键值对和实例的对应关系记录下来?
问题2:哨兵实例是不是越多越好呢?如果同时调大down-after-milliseconds值,对减少误判是不是也有好处?
问题1:5个哨兵实例的集群,quorum值设为2。在运行过程中,如果有3个哨兵实例都发生故障了,此时,Redis主库如果有故障,还能正确地判断主库“客观下线”吗?如果可以的话,还能进行主从库自动切换吗?
问题2:如果想要应用程序不感知服务的中断,还需要哨兵或客户端再做些什么吗?
问题1:在主从切换过程中,客户端能否正常地进行请求操作呢?
问题:为什么主从库间的复制不使用 AOF?
问题:使用一个 2 核 CPU、4GB 内存、500GB 磁盘的云主机运行 Redis,Redis 数据库的数据量大小差不多是 2GB。当时 Redis主要以修改操作为主,写读比例差不多在 8:2 左右,也就是说,如果有 100 个请求,80 个请求执行的是修改操作。在这个场景下,用 RDB 做持久化有什么风险吗?
问题2:AOF 重写为什么不共享使用 AOF 本身的日志?
问题1:AOF重写过程中有没有其他潜在的阻塞风险?
问题:Redis基本IO模型中还有哪些潜在的性能瓶颈?
问题:整数数组和压缩列表作为底层数据结构的优势是什么?
问题:和跟Redis相比,SimpleKV还缺少什么?
课后思考题答案及常见问题答疑

该思维导图由 AI 生成,仅供参考

你好,我是蒋德钧。
咱们的课程已经更新 9 讲了,这段时间,我收到了很多留言。很多同学都认真地回答了课后思考题,有些回答甚至可以说是标准答案。另外,还有很多同学针对 Redis 的基本原理和关键机制,提出了非常好的问题,值得好好讨论一下。
今天,我就和你聊一聊课后题答案,并且挑选一些典型问题,集中进行一次讲解,希望可以解决你的困惑。

课后思考题答案

第 1 讲

问题:和跟 Redis 相比,SimpleKV 还缺少什么?
@曾轼麟、@Kaito 同学给出的答案都非常棒。他们从数据结构到功能扩展,从内存效率到事务性,从高可用集群再到高可扩展集群,对 SimpleKV 和 Redis 进行了详细的对比。而且,他们还从运维使用的角度进行了分析。我先分享一下两位同学的答案。
@曾轼麟同学:
数据结构:缺乏广泛的数据结构支持,比如支持范围查询的 SkipList 和 Stream 等数据结构。
高可用:缺乏哨兵或者 master-slave 模式的高可用设计;
横向扩展:缺乏集群和分片功能;
内存安全性:缺乏内存过载时的 key 淘汰算法的支持;
内存利用率:没有充分对数据结构进行优化,提高内存利用率,例如使用压缩性的数据结构;
功能扩展:需要具备后续功能的拓展;
不具备事务性:无法保证多个操作的原子性。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

蒋德钧老师的文章深入探讨了Redis的基本原理和关键机制,为读者提供了宝贵的技术资料。文章详细比较了SimpleKV和Redis,解释了底层数据结构的优势,以及Redis基本IO模型中的潜在性能瓶颈。此外,蒋老师还探讨了AOF重写过程中的阻塞风险和使用RDB做持久化的风险。他还回答了关于主从库复制、主从切换过程中客户端操作等问题。在典型问题讲解部分,蒋老师详细解释了Redis rehash的触发时机和执行机制,以及主线程、子进程和后台线程的联系与区别。这篇文章内容丰富,对于想要快速了解Redis技术特点的读者具有很高的参考价值。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Redis 核心技术与实战》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(64)

  • 最新
  • 精选
  • zhou
    感谢老师的答疑,明白了写时复制的底层原理。之前一直以为主进程有写操作时,fork 出来的子进程会复制一份物理内存数据过来,实际上只会复制一份页表,相对于内存数据,页表数据小很多。

    作者回复: 理解的没错!

    2020-08-26
    6
    42
  • 袁东昊的电信手机
    请问下老师:目前使用比较多的都是Redis Cluster模式,RedisCluster模式已经可以自己选主了,为什么还还这么多研究Redis Sentinel。

    作者回复: Sentinel提供了分布式系统中选主问题的参考实现,具有一定的普适性,Sentinel的实现类似于Raft协议,所以研究下Sentinel也可以帮助我们理解Raft,Raft在分布式系统中还是很有用的。

    2020-11-15
    19
  • yyl
    欢呼,有些地方自己理解的是正确的😎 晚上回去再核对一遍

    作者回复: 温故而知新,认真学习的好同学!

    2020-08-26
    2
  • 赵茭茭
    前9讲 我一共学了 3遍 真的是每一次学习都理解不同 学的越来越深 真的是很棒的文章 比网上的博客强太多了 很系统
    2020-12-05
    5
    134
  • Geek_8b8d3d
    我觉得基础篇就够我去面试了
    2021-04-14
    4
    49
  • 烫烫烫
    关于rehash的触发时机,装载因子>=1和>=5是不是太大了?当装载因子接近1的时候,冲突概率已经很严重了吧。我记得大部分语言(Java/C/C#/Go)的哈希表扩容时机,装载因子都小于1。有老师或哪位同学能帮我解惑吗?
    2020-11-04
    7
    13
  • 悟空聊架构
    这个复盘总结得很棒,看完后建议回头再看下前面几篇。
    2021-05-12
    12
  • 阮华
    从5:30到现在9:36,一口气把这10课基础篇看完了,受益颇多,这一天学的比我前几年学的都深入。
    2022-02-26
    4
    8
  • Geek_ee09b9
    学到这里,有点忘了再看一遍
    2020-09-12
    7
  • 曾轼麟
    谢谢老师的解答和认可
    2020-08-29
    6
收起评论
显示
设置
留言
64
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部