開始讀redis的源碼了

Redis是一個很簡單的nosql類型的數據庫,代碼量相對來說是比較少的.但是代碼風格確實比較漂亮.


我打算花一段時間剖析一下它的代碼,不光是看啦,看的話,收穫是不大的.我打算從Redis那紛繁複雜,令人眼花繚亂的代碼裏剝出一個單機的數據庫,能夠運行的,但是沒有那麼多的錯誤處理代碼,這樣以來既可以學到作者的代碼風格,也可以看到如何來實現一個數據庫,同時還可以學習網絡編程,確實是一舉多得的一件事情.


如果你想了解一下源碼的話,推薦一本寫的比較清楚的書:

<<Redis設計與實現>>



我應該會在這項工作估計花幾個星期吧,最遲應該不超過一個月,剝完之後,我打算用cpp來寫一個redis客戶端.然後我研究生期間的網絡編程學習之旅估計就到頭了,因爲加上我之前做過的一些東西,linux網絡編程的一些特別坑的地方,以及特別精華的東西已經觸摸到了,剩下的都不是什麼難事了,如果將來工作是這方面的話,就等待工作慢慢地熟練了.


現在已經讀了一部分,最起碼它的統一事件源部分已經剝出來了,接下來慢慢添加剩餘的代碼.

如果你也感興趣的話,可以看一下我剝出來的代碼:https://github.com/lishuhuakai/Redis-Simplify

12月10日:

~~~~~~~~~~

完結撒花,代碼已經剝離完畢,代碼也能很好地運行了,我使用的機器是ubuntu 15.10.接下來就是寫一個客戶端來練練手了,相比於服務端,客戶端簡直就是小兒科.


12月3日:

~~~~~~~~~~

代碼現在已經非常臃腫了.看來C的代碼到了一定的程度之後,真的變得很難管理了.個人突然覺得1到2萬的c代碼還在掌控之內,再多就已經超過我能掌控的範圍了.換句話說,你不可能做到細節與宏觀都瞭解得一清二楚,太費勁了.


這或許也是爲什麼人們要提出抽象的原因吧,我只規定一套接口,我的代碼依賴於這套接口之上,至於你怎麼實現,那就和我沒有多大的關係了.


還有一點,c工程寫大之後,其實你去看它的代碼,其實裏面用了很多面向對象的思想,包括數據的封裝,代碼的複用,感覺越寫越像cpp.代碼我已經剝了很大的一部分了,應該用不了多久就能剝出一個單機NoSql數據庫了.然後準備開始寫redis的客戶端了.


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章