redis6.0原始碼學習(一)學習路徑
阿新 • • 發佈:2020-12-08
redis6.0原始碼學習(一)學習路徑
參考網上給出來的學習路徑對原始碼進行學習,同時用部落格的形式記錄學習過程。
1 、熟悉Redis的資料結構部分
- 記憶體分配 zmalloc.c和zmalloc.h
- 動態字串 sds.h和sds.c
- 雙端連結串列 adlist.c和adlist.h
- 字典 dict.h和dict.c
- 跳躍表 server.h檔案裡面關於zskiplist結構和zskiplistNode結構,以及t_zset.c中所有zsl開頭的函式,比如 zslCreate、zslInsert、zslDeleteNode等等。
- 基數統計 hyperloglog.c 中的 hllhdr 結構, 以及所有以 hll 開頭的函式
2、 熟悉Redis的記憶體編碼結構
- 整數集合資料結構 intset.h和intset.c
- 壓縮列表資料結構 ziplist.h和ziplist.c
3、熟悉Redis資料型別的實現
- 物件系統 object.c
- 字串鍵 t_string.c
- 列表建 t_list.c
- 雜湊鍵 t_hash.c
- 集合鍵 t_set.c
- 有序集合鍵 t_zset.c中除 zsl 開頭的函式之外的所有函式
- HyperLogLog鍵 hyperloglog.c中所有以pf開頭的函式
4、 熟悉Redis資料庫的實現
- 資料庫實現 redis.h檔案中的redisDb結構,以及db.c檔案
- 通知功能 notify.c
- RDB持久化 rdb.c
- AOF持久化 aof.c
5 、熟悉客戶端和伺服器端的程式碼實現
- 事件處理模組 ae.c/ae_epoll.c/ae_evport.c/ae_kqueue.c/ae_select.c
- 網路連結庫 anet.c和networking.c
- 伺服器端 redis.c
- 客戶端 redis-cli.c
這個時候可以閱讀下面的獨立功能模組的程式碼實現
- lua指令碼 scripting.c
- 慢查詢 slowlog.c
- 監視 monitor.c
6、 熟悉Redis多機部分的程式碼實現
- 複製功能 replication.c
- Redis Sentinel sentinel.c
- 叢集 cluster.c