1. 程式人生 > 資料庫 >redis6.0原始碼學習(一)學習路徑

redis6.0原始碼學習(一)學習路徑

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