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從網絡連接上讀取請求,解析出請求參數並處理。