redis啓動流程介紹

轉載於:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/114.html?1455860562

1. 準備運行環境

* 設置oom handler​,zmalloc分配內存失敗時調用
* 初始化隨機種子,用於生成隨機數
* 將server參數初始化爲默認值  
* 創建命令與處理函數的映射表

2. 解析命令行參數、loadServerConfig()解析配置文件

* 配置文件會覆蓋命令行指定的參數
* 無效的配置項或者不合理的配置值會導致redis無法正常啓動

3. initServer()初始化服務

* 安裝信號處理函數  
* 創建共享對象,redis預分配好常用的對象用於共享,以節省內存  
* 根據maxc lients配置調整max open files
*  創建全局db字典,每個db對應一個dict  
* 監聽網絡端口,安裝事件處理器  
* 如果開啓了aof,打開aof文件  
* 創建serverCron定時器

4. loadDataFromDisk()從rdb或aof文件加載數據

* load數據出錯(比如文件格式亂掉)等會導致redis不能正常啓動
* loading的過程中,redis仍能處理請求,但大部分請求都會回覆-LOADING錯誤

5. aeMain()開始事件循環,接收客戶端請求

監聽文件描述符的事件處理函數初始化爲acceptTcpHandler,新建立的連接的事件處理函數設置爲readQueryFromClient,readQueryFromClient從網絡連接上讀取請求,解析出請求參數並處理。


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