你好,我是蒋德钧。

时间过得真快,从7月26日上线到现在,我们已经走过了一个半月的学习之旅,不知道你的收获如何呢?

前面我其实也说过,阅读和学习Redis源码确实是一个比较烧脑的任务,需要你多花些时间钻研。而从我的经验来看,阶段性的验证和总结是非常重要的。所以在这里,我特别设置了期中考试周,从9月13日开始到9月19日结束,这期间我们会暂停更新正文内容,你可以好好利用这一周的时间,去回顾一下前20讲的知识,做一个巩固。

有标准才有追求,有追求才有动力,有动力才有进步。一起来挑战一下吧,开启你的期中考试之旅。

我给你出了一套测试题,包括一套选择题和一套问答题。

选择题

问答题

第一题

Redis源码中实现的哈希表在rehash时,会调用dictRehash函数。dictRehash函数的原型如下,它的参数n表示本次rehash要搬移n个哈希桶(bucket)中的数据。假设dictRehash被调用,并且n的传入值为10。但是,在dictRehash查找的10个bucket中,前5个bucket有数据,而后5个bucket没有数据,那么,本次调用dictRehash是否就只搬移了前5个bucket中的数据?

int dictRehash(dict *d, int n) 

第二题

Redis的事件驱动框架是基于操作系统IO多路复用机制进行了封装,以Linux的epoll机制为例,该机制调用epoll_create函数创建epoll实例,再调用epoll_ctl将监听的套接字加入监听列表,最后调用epoll_wait获取就绪的套接字再进行处理。请简述Redis事件驱动框架中哪些函数和epoll机制各主要函数有对应的调用关系。

好了,这节课就到这里。希望你能抓住期中周的机会,查漏补缺,快速提升Redis源码的阅读和学习能力。我们下节课再见!

评论