【redis6.0.6】redis6.0.6源碼,慢慢看,慢慢聊 -- 第一天:學(xué)習(xí)路線
源碼之前,了無秘密

此前翻譯了Redis.conf的配置文件,獲6篇文,大家也挺喜歡的。
Redis.conf翻譯與配置(一)
redis.conf翻譯與配置(二)
redis.conf翻譯與配置(三)
redis.conf翻譯與配置(四)
redis.conf翻譯與配置(五)
redis.conf翻譯與配置(六)
也寫了一些redis實操和概念的文,反響還不錯,漲了不少粉絲
帶上問題來學(xué)redis,看到不吃虧(什么是redis?緩存問題、數(shù)據(jù)一致性、redis配置文件漢化版)
全面分析redis持久化機制
and so on.
之后我打開了redis/src目錄,發(fā)現(xiàn)了“新大陸”。
我準備學(xué)習(xí)一下redis的源碼,并總結(jié)我的學(xué)習(xí)筆記。
那么學(xué)習(xí)總該有個路線圖,于是經(jīng)過多方求教,我把那一堆上百個文件做了個初步的劃分(隨著學(xué)習(xí)的進度后面會再細分):
學(xué)習(xí)推進路線
受侯捷老師的《STL源碼剖析》的帶動,我決定先學(xué)習(xí)redis的內(nèi)存分配原則,為接下來的數(shù)據(jù)結(jié)構(gòu)鋪平道路。
在閱讀完和數(shù)據(jù)結(jié)構(gòu)有關(guān)的文件之后, 接下來就應(yīng)該閱讀內(nèi)存編碼(encoding)數(shù)據(jù)結(jié)構(gòu)了。
不過據(jù)說:內(nèi)存編碼數(shù)據(jù)結(jié)構(gòu)不容易找到相關(guān)的資料, 因為這些數(shù)據(jù)結(jié)構(gòu)都是 Redis 為了節(jié)約內(nèi)存而專門開發(fā)出來的, 換句話說, 這些數(shù)據(jù)結(jié)構(gòu)都是特制(adhoc)的, 除了 Redis 源碼中的文檔之外, 基本上找不到其他資料來了解這些特制的數(shù)據(jù)結(jié)構(gòu)。
接下來, 為了知道 Redis 是如何通過以上提到的數(shù)據(jù)結(jié)構(gòu)來實現(xiàn)不同類型的鍵, 我們需要閱讀實現(xiàn)各個數(shù)據(jù)類型的文件, 以及 Redis 的對象系統(tǒng)文件。
在讀完了 Redis 使用所有底層數(shù)據(jù)結(jié)構(gòu), 以及 Redis 是如何使用這些數(shù)據(jù)結(jié)構(gòu)來實現(xiàn)不同類型的鍵之后, 我們就可以開始閱讀 Redis 里面和數(shù)據(jù)操作有關(guān)的代碼了
接下來,在閱讀完數(shù)據(jù)庫實現(xiàn)代碼, 以及 RDB 和 AOF 兩種持久化的代碼之后, 我們可以開始閱讀客戶端和 Redis 服務(wù)器本身的實現(xiàn)代碼
當然,前面閱讀過程中還會需要一些配套文件的支持,碧如bio、rio等
在弄懂了 Redis 的單機服務(wù)器是怎樣運作的之后, 就可以開始閱讀 Redis 多機功能的實現(xiàn)代碼了
工具類
還有一些工具類:
以及剩下的一些:
這些我可能就看看Makefile,還有那幾個不知道去哪兒的能不能找到該去的地方。
前期準備工作已畢,之后就開始學(xué)習(xí)之路了。
如果有需要這套分好的文件的朋友,可以關(guān)注私信,畢竟我分這一大堆東西也不容易啊。
Redis 數(shù)據(jù)結(jié)構(gòu)
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。