爲什麼要從Redis源碼分析

前言

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

結語

如果覺得寫得還行,麻煩給個贊👍,您的認可纔是我寫作的動力!

如果覺得有說的不對的地方,歡迎評論指出。

好了,拜拜咯。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章