<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ? ? ? ? ?從今天起,本人將會展開對Redis源碼的學習,Redis的代碼規模比較小,非常適合學習,是一份非常不錯的學習資料,數了一下大概100個文件左右的樣子,用的是C語言寫的。希望最終能把他啃完吧,C語言好久不用,快忘光了。分析源碼的第一步,先別急著想著從哪開始看起,先瀏覽一下源碼結構,可以模塊式的漸入,不過比較坑爹的是,Redis的源碼全部放在在里面的src目錄里,一下90多個文件統統在里面了,所以我選擇了拆分,按功能拆分,有些文件你看名字就知道那是干什么的。我拆分好后的而結果如下: ![](https://box.kancloud.cn/2016-08-24_57bd74f6b7941.jpg) 11個包,這樣每個包中的文件就比較可接受了,但是分出這個類別,我也是花了一定時間,思考了下,Redis下的主要的一些文件的特征,最后定的,應該算是比較全的了。 下面開始一個包一個包的介紹: **test:(測試) 1.memtest.c 內存檢測 2.redis_benchmark.c 用于redis性能測試的實現。 3.redis_check_aof.c 用于更新日志檢查的實現。 4.redis_check_dump.c 用于本地數據庫檢查的實現。 5.testhelp.c 一個C風格的小型測試框架。 struct:(結構體) 1.adlist.c 用于對list的定義,它是個雙向鏈表結構 2.dict.c 主要對于內存中的hash進行管理 3.sds.c 用于對字符串的定義 4.sparkline.c 一個擁有sample列表的序列 5.t_hash.c hash在Server/Client中的應答操作。主要通過redisObject進行類型轉換。 6.t_list.c list在Server/Client中的應答操作。主要通過redisObject進行類型轉換。 7.t_set.c ?set在Server/Client中的應答操作。主要通過redisObject進行類型轉換。 8.t_string.c string在Server/Client中的應答操作。主要通過redisObject進行類型轉換。 9.t_zset.c zset在Server/Client中的應答操作。主要通過redisObject進行類型轉換。 10.ziplist.c ?ziplist是一個類似于list的存儲對象。它的原理類似于zipmap。 11.zipmap.c ?zipmap是一個類似于hash的存儲對象。 data:(數據操作) 1.aof.c 全稱為append only file,作用就是記錄每次的寫操作,在遇到斷電等問題時可以用它來恢復數據庫狀態。 2.config.c 用于將配置文件redis.conf文件中的配置讀取出來的屬性通過程序放到server對象中。 3.db.c對于Redis內存數據庫的相關操作。 4.multi.c用于事務處理操作。 5.rdb.c ?對于Redis本地數據庫的相關操作,默認文件是dump.rdb(通過配置文件獲得),包括的操作包括保存,移除,查詢等等。 6.replication.c 用于主從數據庫的復制操作的實現。 tool:(工具) 1.bitops.c 位操作相關類 2.debug.c 用于調試時使用 3.endianconv.c 高低位轉換,不同系統,高低位順序不同 4.help.h ?輔助于命令的提示信息 5.lzf_c.c 壓縮算法系列 6.lzf_d.c ?壓縮算法系列 7.rand.c 用于產生隨機數 8.release.c 用于發步時使用 9.sha1.c sha加密算法的實現 10.util.c ?通用工具方法 11.crc64.c 循環冗余校驗 event:(事件) 1.ae.c 用于Redis的事件處理,包括句柄事件和超時事件。 2.ae_epoll.c 實現了epoll系統調用的接口 3.ae_evport.c 實現了evport系統調用的接口 4.ae_kqueue.c 實現了kqueuex系統調用的接口 5.ae_select.c 實現了select系統調用的接口 baseinfo:(基本信息) 1.asciilogo,c redis的logo顯示 2.version.h定有Redis的版本號 compatible:(兼容) 1.fmacros.h 兼容Mac系統下的問題 2.solarisfixes.h 兼容solary下的問題 main:(主程序) 1.redis.c redis服務端程序 2.redis_cli.c redis客戶端程序 net:(網絡) 1.anet.c 作為Server/Client通信的基礎封裝 2.networking.c 網絡協議傳輸方法定義相關的都放在這個文件里面了。 wrapper:(封裝類) 1.bio.c background I/O的意思,開啟后臺線程用的 2.hyperloglog.c 一種日志類型的 3.intset.c ?整數范圍內的使用set,并包含相關set操作。 4.latency.c 延遲類 5.migrate.c 命令遷移類,包括命令的還原遷移等 6.notify.c 通知類 7.object.c ?用于創建和釋放redisObject對象 8.pqsort.c ?排序算法類 9.pubsub.c 用于訂閱模式的實現,有點類似于Client廣播發送的方式。 10.rio.c redis定義的一個I/O類 11.slowlog.c 一種日志類型的,與hyperloglog.c類似 12.sort.c 排序算法類,與pqsort.c使用的場景不同 13.syncio.c 用于同步Socket和文件I/O操作。 14.zmalloc.c 關于Redis的內存分配的封裝實現 others:(存放了一些我暫時還不是很清楚的類,所以沒有解釋了) 1.scripting.c 2.sentinel.c 2.setproctitle.c 3.valgrind.sh 4.redisassert.h **我分析的此Redis源代碼是目前最新的代碼redis-2.8.17,確保是最新的,新加了crc64.c等這些在2.2左右的版本上根本沒有, 里面的很多.h頭文件被我省掉了,因為很多同個文件名.h,.c文件都是其實指的是同個功能,后續,我將會分模塊式分析Redis源代碼,工作的時候根本沒時間進行代碼級別的研究。抓緊時間啦,fighting!** **在我的github上會持續更新Redis代碼的中文分析,地址送出https://github.com/linyiqun/Redis-Code,共同學習進步**
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看