redis的一些介紹,麻煩閱讀前面的幾篇文章,想對redis的詳細實現有所了解,強力推薦《redis設計與實現》(不僅僅從作者那兒學習到redis的實現,還有項目的管理、思想等,作者可能比你我都年輕歐)。如果閱讀了上面的文檔,激起你對redis的強力好奇,那么就只能閱讀源碼了。不管是在校學生,還是已工作的,redis的代碼都值得閱讀。我們可以了解如何編寫一個工程可用軟件,可以學習一些開源常用軟件,通過redis豐富的數據結構,可以熟悉大學學習的那點兒數據結構,可以了解如何實現一個自己高效的網絡框架等等。
我看到有人介紹redis源代碼的閱讀方法如下:
-
自底向上:從耦合關系最小的模塊開始讀,然后逐漸過度到關系緊密的模塊。就好像寫程序的測試一樣,先從單元測試開始,然后才到功能測試。我在剛開始讀 Redis 源碼的時候,使用的就是這種方法:先從單獨的數據結構模塊開始,然后再過渡到高層的功能模塊。
-
從功能入手:通過文件名(模塊名)和函數名,快速定位到一個功能的具體實現,然后追蹤整個實現的運作流程,從而了解該功能的實現方式。我在讀阻塞列表、數據庫這種流程和功能都比較復雜,和其他文件耦合也比較多的模塊時,使用的就是這樣的方法。
-
自頂向下:從程序的 main() 函數,或者某個特別大的調用者函數為入口,以深度優先或者廣度優先的方式閱讀它的源碼。我在閱讀 redis.c/serverCron() 、 redis.c/main() 和 ae.c/aeMain() 這種有明顯調用者性質的函數時,使用的就是這樣的方法。
我覺得不錯,可以作為參考歐。
你是吧現在就准備動手了,但是一個人閱讀代碼,寫文檔比較枯燥,害怕自己堅持不住,並且個人能力有些,有可能對有些代碼理解錯誤或者不能覺察作者的用意。因此准備探索一種新的代碼閱讀模式,通過一個開源項目和一個qq群把大家團結起來,開源項目的提交人必須是有限的,但是正在閱讀代碼的人可能很多,發現了問題不能及時反饋或者咨詢,QQ群比較及時。開源項目是一個代碼分析的文檔,restructured text格式,使用sphinx進行生成各種文檔格式。sphinx的使用可以參考:( sphinx命令 繪圖)等。尋找四個有興趣的小伙伴可以進行編輯,別的小伙伴就不好意思了,因為bitbucket只能免費支持五個,只能在qq群反饋意見。
為了建立信任,就做一下自我介紹:2012年畢業於西安電子科技大學,現在就職於一家深圳網絡公司,從一進公司就是做數據倉庫這一塊兒的,公司使用的是自研的系統,詳細就不太方便介紹。對大數據比較感興趣,同時也在了解一些hadoop、spark的知識。但是,這是第一次進行這樣的嘗試,若有什么好的建議歡迎提給樓主歐。
項目地址:https://bitbucket.org/softfree/redis_doc
redis源碼解析 http://redissrc.readthedocs.org/en/latest/
如果想成為文檔編輯者可郵件,最好做一下簡單自我介紹:371387455(at)qq.com