上次刚刚分析过了客户端的结构体分析,思路比较简答,清晰,最后学习的是服务端的实现,服务端在Redis可是重中之重,里面基本上囊括了之前模块中涉及到的所有知识点,从redis的头文件就可以看出了,redis.h代码量就已经破1000+行了,而且都还只是一些变量,宏定义的声明,和一些方法原型的声明。所以,今天的总结跟昨天一样,先不做具体的实现学习,先从全局的角度思考,服务端的整体设计思路,这从头文件的声明正好可以学习。
/* ----------------------- 声明了一下所需的头文件,主要为各种结构体的操作文件 -------------------- */
#include "ae.h" /* Event driven programming library 事件驱动库*/
#include "sds.h" /* Dynamic safe strings 动态字符串库 */
#include "dict.h" /* Hash tables 哈希字典 */
#include "adlist.h" /* Linked lists 普通双向链表 */
#include "zmalloc.h" /* total memory usage aware version of malloc/free 内存申请管理库 */
#include "anet.h" /* Networking the easy way 网络操作库 */
#include "ziplist.h" /* Compact list data structure 压缩列表 *