天天看點

帶有詳細注釋的 Redis 3.0 代碼 (github.com)



Redis 3.0 源碼注釋

本項目是注釋版的 Redis 3.0 源碼, 原始代碼來自:

https://github.com/antirez/redis

這份注釋是我在創作新版《Redis 設計與實作》期間, 為了了解 Redis 的内部實作而制作的, 所有在書中有介紹的内容, 在源碼中都進行了相應的注釋。

在注釋的過程中, 除了少量空格和空行方面的調整外, 沒有對原始代碼進行任何其他改動, 最大程度地保證了代碼的“原汁原味”。

希望這份注釋源碼能給大家學習和了解 Redis 帶來一點幫助。

另外,

新版《Redis 設計與實作》

正在各大網店發售中, 希望大家可以多多支援這本書。

Have fun!

黃健宏(huangz)

2014 年 6 月 28 日

https://github.com/huangz1990/redis-3.0-annotated?utm_source=tuicool&utm_medium=referral#%E9%99%84%E5%BD%95%E5%90%84%E4%B8%AA%E6%BA%90%E7%A0%81%E6%96%87%E4%BB%B6%E7%9A%84%E4%BD%9C%E7%94%A8%E7%AE%80%E4%BB%8B 附錄:各個源碼檔案的作用簡介

檔案 作用

adlist.c

adlist.h

雙端連結清單資料結構的實作。

ae.c

ae.h

ae_epoll.c

ae_evport.c

ae_kqueue.c

ae_select.c

事件處理器,以及各個具體實作。

anet.c

anet.h

Redis 的異步網絡架構,内容主要為對 socket 庫的包裝。

aof.c

AOF 功能的實作。

asciilogo.h

儲存了 Redis 的 ASCII LOGO 。

bio.c

bio.h

Redis 的背景 I/O 程式,用于将 I/O 操作放到子線程裡面執行, 減少 I/O 操作對主線程的阻塞。

bitops.c

二進制位操作指令的實作檔案。

blocked.c

用于實作 BLPOP 指令和 WAIT 指令的阻塞效果。

cluster.c

cluster.h

Redis 的叢集實作。

config.c

config.h

Redis 的配置管理實作,負責讀取并分析配置檔案, 然後根據這些配置修改 Redis 伺服器的各個選項。

crc16.c

crc64.c

crc64.h

計算 CRC 校驗和。

db.c

資料庫實作。

debug.c

調試實作。

dict.c

dict.h

字典資料結構的實作。

endianconv.c

endianconv.h

二進制的大端、小端轉換函數。

fmacros.h

一些移植性方面的宏。

help.h

utils/generate-command-help.rb

程式自動生成的指令幫助資訊。

hyperloglog.c

HyperLogLog 資料結構的實作。

intset.c

intset.h

整數集合資料結構的實作,用于優化 SET 類型。

lzf_c.c

lzf_d.c

lzf.h

lzfP.h

Redis 對字元串和 RDB 檔案進行壓縮時使用的 LZF 壓縮算法的實作。

Makefile

Makefile.dep

建構檔案。

memtest.c

記憶體測試。

mkreleasehdr.sh

用于生成釋出資訊的腳本。

multi.c

Redis 的事務實作。

networking.c

Redis 的用戶端網絡操作庫, 用于實作指令請求接收、發送指令回複等工作, 檔案中的函數大多為 write 、 read 、 close 等函數的包裝, 以及各種協定的分析和建構函數。

notify.c

Redis 的資料庫通知實作。

object.c

Redis 的對象系統實作。

pqsort.c

pqsort.h

快速排序(QuickSort)算法的實作。

pubsub.c

釋出與訂閱功能的實作。

rand.c

rand.h

僞随機數生成器。

rdb.c

rdb.h

RDB 持久化功能的實作。

redisassert.h

Redis 自建的斷言系統。

redis-benchmark.c

Redis 的性能測試程式。

redis.c

負責伺服器的啟動、維護和關閉等事項。

redis-check-aof.c

redis-check-dump.c

RDB 檔案和 AOF 檔案的合法性檢查程式。

redis-cli.c

Redis 用戶端的實作。

redis.h

Redis 的主要頭檔案,記錄了 Redis 中的大部分資料結構, 包括伺服器狀态和用戶端狀态。

redis-trib.rb

Redis 叢集的管理程式。

release.c

release.h

記錄和生成 Redis 的釋出版本資訊。

replication.c

複制功能的實作。

rio.c

rio.h

Redis 對檔案 I/O 函數的包裝, 在普通 I/O 函數的基礎上增加了顯式緩存、以及計算校驗和等功能。

scripting.c

腳本功能的實作。

sds.c

sds.h

SDS 資料結構的實作,SDS 為 Redis 的預設字元串表示。

sentinel.c

Redis Sentinel 的實作。

setproctitle.c

程序環境設定函數。

sha1.c

sha1.h

SHA1 校驗和計算函數。

slowlog.c

slowlog.h

慢查詢功能的實作。

solarisfixes.h

針對 Solaris 系統的更新檔。

sort.c

SORT 指令的實作。

syncio.c

同步 I/O 操作。

testhelp.h

測試輔助宏。

t_hash.c

t_list.c

t_set.c

t_string.c

t_zset.c

定義了 Redis 的各種資料類型,以及這些資料類型的指令。

util.c

util.h

各種輔助函數。

valgrind.sup

valgrind 的suppression檔案。

version.h

記錄了 Redis 的版本号。

ziplist.c

ziplist.h

ZIPLIST 資料結構的實作,用于優化 LIST 類型。

zipmap.c

zipmap.h

ZIPMAP 資料結構的實作,在 Redis 2.6 以前用與優化 HASH 類型, Redis 2.6 開始已經廢棄。

zmalloc.c

zmalloc.h

記憶體管理程式。