<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        手把手教你redis數(shù)據(jù)庫的二次開發(fā)

        來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-09 07:33:27
        文檔

        手把手教你redis數(shù)據(jù)庫的二次開發(fā)

        手把手教你redis數(shù)據(jù)庫的二次開發(fā):功能說明:通過修改源代碼的形式,實現(xiàn)redis自帶的命令set key value的功能。并且新的命令為make key value,注意,所有修改的源文件都處于src目錄下面 需要修改的部分: 1 redis.c 該文件是redis數(shù)據(jù)庫服務(wù)器端主文件,也就是main函數(shù)入口處。所有的命令
        推薦度:
        導(dǎo)讀手把手教你redis數(shù)據(jù)庫的二次開發(fā):功能說明:通過修改源代碼的形式,實現(xiàn)redis自帶的命令set key value的功能。并且新的命令為make key value,注意,所有修改的源文件都處于src目錄下面 需要修改的部分: 1 redis.c 該文件是redis數(shù)據(jù)庫服務(wù)器端主文件,也就是main函數(shù)入口處。所有的命令

        功能說明:通過修改源代碼的形式,實現(xiàn)redis自帶的命令set key value的功能。并且新的命令為make key value,注意,所有修改的源文件都處于src目錄下面 需要修改的部分: 1 redis.c 該文件是redis數(shù)據(jù)庫服務(wù)器端主文件,也就是main函數(shù)入口處。所有的命令定

        功能說明:通過修改源代碼的形式,實現(xiàn)redis自帶的命令set key value的功能。并且新的命令為make key value,注意,所有修改的源文件都處于src目錄下面

        需要修改的部分:

        1 redis.c

        該文件是redis數(shù)據(jù)庫服務(wù)器端主文件,也就是main函數(shù)入口處。所有的命令定義均在該文件定義的全局變量中。

        struct redisCommand redisCommandTable[] = {
         {"get",getCommand,2,"r",0,NULL,1,1,1,0,0},
         {"make",makeCommand,3,"wm",0,NULL,1,1,1,0,0},//our function
         {"set",setCommand,-3,"wm",0,noPreloadGetKeys,1,1,1,0,0},
         {"setnx",setnxCommand,3,"wm",0,noPreloadGetKeys,1,1,1,0,0},
         {"setex",setexCommand,4,"wm",0,noPreloadGetKeys,1,1,1,0,0},
         {"psetex",psetexCommand,4,"wm",0,noPreloadGetKeys,1,1,1,0,0},
         {"append",appendCommand,3,"wm",0,NULL,1,1,1,0,0},
         {"strlen",strlenCommand,2,"r",0,NULL,1,1,1,0,0},
        
        ......這里省略.......
        結(jié)構(gòu)體redisCommand就是保存redis數(shù)據(jù)庫的所有命令。我們在第二行添加了一句:
         {"make",makeCommand,3,"wm",0,NULL,1,1,1,0,0},//our function
        其中注意,第一個參數(shù)為命令,第二個為命令調(diào)用的函數(shù),第三個三參數(shù)。比如set key value 一共就是三個參數(shù),注意如果輸入命令和參數(shù)不同,服務(wù)器端會給出提示。

        2 redis.h

        該文件是頭文件,需要在這里添加對函數(shù)的原型聲明。

        /* Commands prototypes */
        void authCommand(redisClient *c);
        void pingCommand(redisClient *c);
        void echoCommand(redisClient *c);
        void setCommand(redisClient *c);
        void makeCommand(redisClient *c);
        void setnxCommand(redisClient *c);
        
        ...............省略.................

        我們在頭文件上添加我們新的函數(shù)原型
        void makeCommand(redisClient *c);

        3 t_string.c

        該文件是函數(shù)的實現(xiàn)文件。

        //add by jianghuiwen
        void makeCommand(redisClient *c)
        {
        	setKey(c->db,c->argv[1],c->argv[2]);
        	addReply(c, shared.ok);
        	return;
        }
        void getCommand(redisClient *c) {
         getGenericCommand(c);
        }
        如上述所示,
        void makeCommand(redisClient *c)
        就是我們自己定義的實現(xiàn)函數(shù),

        其中參數(shù)是redisClient *c,也就是客戶端請求(我這里暫時這么說,具體的我會在教程做進一步說明)。

        setKey(c->db,c->argv[1],c->argv[2]);這里setKey是一個函數(shù),該函數(shù)的作用就是設(shè)置數(shù)據(jù)庫中鍵值的函數(shù),其中第一個參數(shù)為系統(tǒng)指定的數(shù)據(jù)庫,第二個參數(shù)為客戶端請求第二個參數(shù),第三個參數(shù)為客戶端命令第三個參數(shù)。

        也就是分別對應(yīng):set key value中的key 和value。

        addReply(c, shared.ok);是給客戶端返回一個OK消息,相當于發(fā)一個信號,否則客戶端會等待。

        上面三個參數(shù)修改完成后,在src上一層目錄進行make,重新編譯,然后運行服務(wù)器端和客戶端

        在客戶端輸入make name jiang

        再輸入get name

        服務(wù)器端會返回jiang。說明執(zhí)行成功。

        \

        如果對于redis安裝或者編譯有疑問,可以在這篇帖子下留言,我會盡快回答。

        聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        手把手教你redis數(shù)據(jù)庫的二次開發(fā)

        手把手教你redis數(shù)據(jù)庫的二次開發(fā):功能說明:通過修改源代碼的形式,實現(xiàn)redis自帶的命令set key value的功能。并且新的命令為make key value,注意,所有修改的源文件都處于src目錄下面 需要修改的部分: 1 redis.c 該文件是redis數(shù)據(jù)庫服務(wù)器端主文件,也就是main函數(shù)入口處。所有的命令
        推薦度:
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 99精品视频在线视频免费观看| 极品色天使在线婷婷天堂亚洲| 二个人看的www免费视频| 国产高清视频在线免费观看| 亚洲一区二区三区91| 亚洲精品无码av天堂| 国产精品亚洲色婷婷99久久精品| 特级毛片A级毛片100免费播放| 日韩中文字幕免费| 在线观看亚洲免费| 亚洲人妻av伦理| 黄色网址免费在线观看| 久久精品亚洲视频| 在线视频免费观看爽爽爽| 亚洲无吗在线视频| 国产免费爽爽视频在线观看| 国产l精品国产亚洲区在线观看| 男人天堂免费视频| 91在线亚洲精品专区| 性做久久久久久免费观看| 久久无码av亚洲精品色午夜| 亚洲黄黄黄网站在线观看| 久久精品国产免费一区| 亚洲天堂中文字幕在线观看| 四虎影院在线免费播放| 一级人做人爰a全过程免费视频| 亚洲伊人久久精品影院| 久久WWW免费人成一看片| 蜜芽亚洲av无码一区二区三区| 亚洲一级黄色视频| 67194国产精品免费观看| 亚洲夜夜欢A∨一区二区三区| 久久午夜无码免费| 狠狠色香婷婷久久亚洲精品| 亚洲精品无码永久在线观看 | 国产成人精品久久亚洲| 国产午夜免费高清久久影院| 亚洲av专区无码观看精品天堂| 四虎成人精品在永久免费| 四虎国产精品永久免费网址| 亚洲国产av玩弄放荡人妇|