Redis源碼分析(三十二)--- redis-cli.c用戶端命令列介面的實現(1)

來源:互聯網
上載者:User

標籤:nosql資料庫   源碼   redis   分散式運算   

         分析了將近1個月的Redis原始碼了,也到了最核心的,最貼近系統開始的地方了,我把他取名為main目錄,裡面就包括了2個重要的檔案,redis-cli和redis檔案,1個代表的是用戶端的執行檔案,1個代表的是服務端的檔案,這2個也是整個系統最最核心的模組,所以我把他歸結到main主程式模組了,主程式模組也是我學習Redis最後的一個模組,在這裡一定能看到我之前看到的所有各個功能模組的痕迹。由於主模組中的代碼量比較多,所以我選擇了分批次的學習,所以今天我主要的是把裡面的API方法給拉了出來,把redis-cli中的東西,做了個解剖。

       剛開始以為redis-cli.是redis-client的縮寫,但其實他的意思:

/* Redis CLI (command line interface) * 命令列介面
所以說,他是直接響應操作redis下的黑視窗的命令的。在這個檔案中,定義了redis的上下文,配置資訊結構體和一堆的API,就大致這些了:

/* redis上下文 */static redisContext *context;/* Redis配置結構體 */static struct config
主要是後面的各種API,先不急著看方法,因為方法真的是太多了,首先我們學會分類:下面是我做的一個圖;


模組還是挺多的吧上面都是英文的表現形式,在後續的分析中,我會逐個模組的做學習,比如第一個Utility functions就是通用方法的意思啦,還有後面的什麼什麼方法等。下面在放出redis-cli中的所有API:

/* Utility functions  通用方法 */static long long ustime(void)static long long mstime(void)static void cliRefreshPrompt(void)static sds cliVersion(void)static void cliInitHelp(void)static void cliOutputCommandHelp(struct commandHelp *help, int group)static void cliOutputGenericHelp(void)static void cliOutputHelp(int argc, char **argv)static void completionCallback(const char *buf, linenoiseCompletions *lc)static int cliAuth()static int cliSelect()static int cliConnect(int force)static void cliPrintContextError(void)static sds cliFormatReplyTTY(redisReply *r, char *prefix)static sds cliFormatReplyRaw(redisReply *r)static sds cliFormatReplyCSV(redisReply *r)static int cliReadReply(int output_raw_strings)static int cliSendCommand(int argc, char **argv, int repeat)static redisReply *reconnectingInfo(void)/* User interface 使用者介面*/static int parseOptions(int argc, char **argv)static sds readArgFromStdin(void)static void usage(void)static char **convertToSds(int count, char** args)static void repl(void)static int noninteractive(int argc, char **argv)/* Eval mode Eval模式*/static int evalMode(int argc, char **argv)/* Latency and latency history modes 延時模式*/static void latencyMode(void)/* Slave mode */unsigned long long sendSync(int fd)static void slaveMode(void)/* RDB transfer mode */static void getRDB(void)/* Bulk import (pipe) mode */static void pipeMode(void)/* Find big keys */static redisReply *sendScan(unsigned long long *it)static int getDbSize(void)static int toIntType(char *key, char *type)static void getKeyTypes(redisReply *keys, int *types)static void getKeySizes(redisReply *keys, int *types, unsigned long long *sizes)static void findBigKeys(void)/* Stats mode */static char *getInfoField(char *info, char *field)static long getLongInfoField(char *info, char *field)void bytesToHuman(char *s, long long n)static void statMode(void)/* Scan mode */static void scanMode(void)/* Intrisic latency mode*/unsigned long compute_something_fast(void)static void intrinsicLatencyModeStop(int s)static void intrinsicLatencyMode(void)/* Program main() */int main(int argc, char **argv)

Redis源碼分析(三十二)--- redis-cli.c用戶端命令列介面的實現(1)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.