Redis 源码剖析与实战
蒋德钧
中科院计算所副研究员
17747 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 47 讲
Redis 源码剖析与实战
15
15
1.0x
00:00/00:00
登录|注册

答疑2 | 第7~12讲课后思考题答案及常见问题答疑

你好,我是蒋德钧。
在今天的答疑中,我除了会解答课程之前的思考题以外,还会带你再进一步了解和数据结构设计、进程管理、高性能线程模型、IO 复用、预定义宏等相关的开发知识。希望你能通过这节课的答疑,进一步扩展你的知识面。

第 7 讲

问题:作为有序索引,Radix Tree 也能提供范围查询,那么与我们日常使用的 B+ 树,以及第 5 讲中介绍的跳表相比,你觉得 Radix Tree 有什么优势和不足吗?
对于这道题,有不少同学比如 @Kaito、@曾轼麟等同学,都对 Radix Tree、B+ 树和跳表做了对比,这里我就来总结一下。
Radix Tree 的优势
因为 Radix Tree 是前缀树,所以,当保存数据的 key 具有相同前缀时,Radix Tree 会在不同的 key 间共享这些前缀,这样一来,和 B+ 树、跳表相比,就节省内存空间。
Radix Tree 在查询单个 key 时,其查询复杂度 O(K) 只和 key 的长度 k 有关,和现存的总数据量无关。而 B+ 树、跳表的查询复杂度和数据规模有关,所以 Radix Tree 查询单个 key 的效率要高于 B+ 树、跳表。
Radix Tree 适合保存大量具有相同前缀的数据。比如一个典型场景,就是 Linux 内核中的 page cache,使用了 Radix Tree 保存文件内部偏移位置和缓存页的对应关系,其中树上的 key 就是文件中的偏移值。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

Redis源码解读:跨平台IO多路复用函数选择及参数传递技巧 本文深入解读了Redis源码中关于IO多路复用函数的选择机制,以及在C函数开发中传递多个参数的技巧。文章首先介绍了Redis对于不同平台的IO多路复用函数的选择机制,通过条件编译和预定义宏来区分不同平台,并展示了相应的代码逻辑。接着,文章讨论了在bio_job结构体中使用指针传递参数的局限性,并提出了利用指针指向结构体的方法来传递多个参数的解决方案。作者通过这些问题和解答,希望读者能够了解C语言编程开发的技巧,如跨平台开发和参数传递,以及对计算机系统关键机制设计的更多了解。整体而言,本文内容涵盖了Redis源码解读、跨平台开发、IO多路复用函数选择、参数传递技巧等多方面的知识,对于想要深入了解相关技术的读者具有很高的参考价值。

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

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论
显示
设置
留言
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部