功能說明:通過修改源代碼的形式,實現(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}, ......這里省略.......
{"make",makeCommand,3,"wm",0,NULL,1,1,1,0,0},//our function
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); ...............省略.................
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)
其中參數(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