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 附錄:各個源碼檔案的作用簡介
檔案 | 作用 |
---|---|
、 | 雙端連結清單資料結構的實作。 |
| 事件處理器,以及各個具體實作。 |
| Redis 的異步網絡架構,内容主要為對 socket 庫的包裝。 |
| AOF 功能的實作。 |
| 儲存了 Redis 的 ASCII LOGO 。 |
| Redis 的背景 I/O 程式,用于将 I/O 操作放到子線程裡面執行, 減少 I/O 操作對主線程的阻塞。 |
| 二進制位操作指令的實作檔案。 |
| 用于實作 BLPOP 指令和 WAIT 指令的阻塞效果。 |
| Redis 的叢集實作。 |
| Redis 的配置管理實作,負責讀取并分析配置檔案, 然後根據這些配置修改 Redis 伺服器的各個選項。 |
| 計算 CRC 校驗和。 |
| 資料庫實作。 |
| 調試實作。 |
| 字典資料結構的實作。 |
| 二進制的大端、小端轉換函數。 |
| 一些移植性方面的宏。 |
| 程式自動生成的指令幫助資訊。 |
| HyperLogLog 資料結構的實作。 |
| 整數集合資料結構的實作,用于優化 SET 類型。 |
| Redis 對字元串和 RDB 檔案進行壓縮時使用的 LZF 壓縮算法的實作。 |
| 建構檔案。 |
| 記憶體測試。 |
| 用于生成釋出資訊的腳本。 |
| Redis 的事務實作。 |
| Redis 的用戶端網絡操作庫, 用于實作指令請求接收、發送指令回複等工作, 檔案中的函數大多為 write 、 read 、 close 等函數的包裝, 以及各種協定的分析和建構函數。 |
| Redis 的資料庫通知實作。 |
| Redis 的對象系統實作。 |
| 快速排序(QuickSort)算法的實作。 |
| 釋出與訂閱功能的實作。 |
| 僞随機數生成器。 |
| RDB 持久化功能的實作。 |
| Redis 自建的斷言系統。 |
| Redis 的性能測試程式。 |
| 負責伺服器的啟動、維護和關閉等事項。 |
| RDB 檔案和 AOF 檔案的合法性檢查程式。 |
| Redis 用戶端的實作。 |
| Redis 的主要頭檔案,記錄了 Redis 中的大部分資料結構, 包括伺服器狀态和用戶端狀态。 |
| Redis 叢集的管理程式。 |
| 記錄和生成 Redis 的釋出版本資訊。 |
| 複制功能的實作。 |
| Redis 對檔案 I/O 函數的包裝, 在普通 I/O 函數的基礎上增加了顯式緩存、以及計算校驗和等功能。 |
| 腳本功能的實作。 |
| SDS 資料結構的實作,SDS 為 Redis 的預設字元串表示。 |
| Redis Sentinel 的實作。 |
| 程序環境設定函數。 |
| SHA1 校驗和計算函數。 |
| 慢查詢功能的實作。 |
| 針對 Solaris 系統的更新檔。 |
| SORT 指令的實作。 |
| 同步 I/O 操作。 |
| 測試輔助宏。 |
| 定義了 Redis 的各種資料類型,以及這些資料類型的指令。 |
| 各種輔助函數。 |
| valgrind 的suppression檔案。 |
| 記錄了 Redis 的版本号。 |
| ZIPLIST 資料結構的實作,用于優化 LIST 類型。 |
| ZIPMAP 資料結構的實作,在 Redis 2.6 以前用與優化 HASH 類型, Redis 2.6 開始已經廢棄。 |
| 記憶體管理程式。 |