redis數據淘汰原理
redis過期數據刪除策略
redis server事件模型
redis cluster mget 引發的討論
redis 3.x windows 集群搭建
redis 命令執行過程
redis string底層數據結構
redis list底層數據結構
redis hash底層數據結構
redis set底層數據結構
redis zset底層數據結構
redis 客戶端管理
redis 主從同步-slave端
redis 主從同步-master端
redis 主從超時檢測
redis aof持久化
redis rdb持久化
redis 數據恢復過程
redis TTL實現原理
redis cluster集群建立
redis cluster集群選主
?這篇文章的目的是為了描述redis server在處理client命令的執行過程,大概包括流程圖、源碼、以及redis的命令格式說明,redis的通信協議參考自redis的 官網 。
?整個redis的server端命令執行過程就如下面這個流程圖:
?nread = read(fd, c->querybuf+qblen, readlen);負責讀取命令數,通過processInputBuffer進行下壹步處理。
?核心在於processInlineBuffer處理內聯命令,processMultibulkBuffer處理批量命令包括get/set等,核心的processCommand用於執行命令。
?執行命令的過程其實主要是尋找命令對應的執行函數,通過lookupCommand查找對應的執行命令,通過call執行命令。
?負責執行命令 c->cmd->proc 並更新統計信息,執行完成後負責同步數據 propagate 。
?主要是負責同步數據到AOF文件和slave節點,feedAppendOnlyFile負責同步到AOF文件,replicationFeedSlaves負責同步
?AOF涉及的緩存有多份,包括
?包含了命令和對應執行函數的映射關系,應該看上去很清晰命令。
協議的壹般格式如下,註意前面的*或者$等字符,結尾的\r\n是分隔符。
其中, 回復中的第二個元素為空。