前言
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
結語
如果覺得寫得還行,麻煩給個贊👍,您的認可纔是我寫作的動力!
如果覺得有說的不對的地方,歡迎評論指出。
好了,拜拜咯。