为什么要从Redis源码分析

2,105 阅读2分钟

redis源码分析系列文章

[Redis源码系列]在Liunx安装和常见API  

String底层实现——动态字符串SDS

前言

Redis是使用C写的,而C中根本不存在string,list,hash,set和zset这些数据类型,那么C是如何将这些数据类型实现出来的呢?对于常见的复制,通知,哨兵,集群等功能,又是如何实现的。

Redis代码规模小,文件数量也不多,所以开始对Redis源码进行分析。

准备工作

首先去官网下载文件,下载完解压即可,我们是对src中的文件进行分析。


还要下载个查看源码的工具,我使用的是DEV C++,虽然不好使,但是能使。使用啥工具,自己看就行。

确定学习路线

先确定下针对学习路线:

1.第一阶段 各种数据类型的底层实现

string的底层实现 SDS sds.h和sds.c



list的底层实现 adlist.h和adlist.c


hash的底层实现 dict.h和dict.c


hash和list的底层实现 ziplist.h和ziplist


zset的底层实现 skiplist.h和skiplist.c


set的底层实现 intset.h和intset.c


2.第二阶段 redis 对底层实现的封装

string的封装 t_string.c

list的封装 t_list.c

hash的封装 t_hash.c

set的封装 t_set.c

zset的封装 t_zset.c


对象系统 object.c

3.第三阶段 Redis的持久化机制

RDB持久化 rdb.h和rdb.c

AOF持久化 aof.c

4.第四阶段 通知

通知功能 notify.c

5.第五阶段 熟悉客户端和服务端的代码实现

事务处理模块 ae.h , ae.c,ae_epoll.c,ae_evport.c,ae_kqueue.c,ae_select.c


6.第六阶段 Redis的复制

replication.c

7.第七阶段 Redis哨兵

sentinel.c

8.第八阶段 Redis集群

cluster.h和cluster.c

结语

如果觉得写得还行,麻烦给个赞👍,您的认可才是我写作的动力!

如果觉得有说的不对的地方,欢迎评论指出。

好了,拜拜咯。

求个关注