手把手教你redis資料庫的二次開發

2021-12-29 22:06:32 字數 1629 閱讀 5455

功能說明:通過修改源**的形式,實現redis自帶的命令set key value的功能。並且新的命令為make key value,注意,所有修改的原始檔都處於src目錄下面

需要修改的部分:

1 redis.c

該檔案是redis資料庫伺服器端主檔案,也就是main函式入口處。所有的命令定義均在該檔案定義的全域性變數中。

struct rediscommand rediscommandtable = ,

,//our function,,

,,,,

......這裡省略.......

結構體rediscommand就是儲存redis資料庫的所有命令。我們在第二行新增了一句:,//our function其中注意,第乙個引數為命令,第二個為命令呼叫的函式,第三個三引數。比如set key value 一共就是三個引數,注意如果輸入命令和引數不同,伺服器端會給出提示。

2 redis.h

該檔案是標頭檔案,需要在這裡新增對函式的原型宣告。

/* 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

該檔案是函式的實現檔案。

//add by jianghuiwen

void makecommand(redisclient *c)

void getcommand(redisclient *c)

如上述所示,void makecommand(redisclient *c)就是我們自己定義的實現函式,

其中引數是redisclient *c,也就是客戶端請求(我這裡暫時這麼說,具體的我會在教程做進一步說明)。

setkey(c->db,c->ar**[1],c->ar**[2]);這裡setkey是乙個函式,該函式的作用就是設定資料庫中鍵值的函式,其中第乙個引數為系統指定的資料庫,第二個引數為客戶端請求第二個引數,第三個引數為客戶端命令第三個引數。

也就是分別對應:set key value中的key 和value。

addreply(c, shared.ok);是給客戶端返回乙個ok訊息,相當於發乙個訊號,否則客戶端會等待。

上面三個引數修改完成後,在src上一層目錄進行make,重新編譯,然後執行伺服器端和客戶端

在客戶端輸入make name jiang

再輸入get name

伺服器端會返回jiang。說明執行成功。

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

手把手教你安裝mysql資料庫

1 需要安準wget命令,可參考另一篇文章。傳送門 2 更換yum源,這裡用阿里的,請參考阿里yum源 1 檢查系統是否安裝其他版本mysql,執行命令 yum list installed grep mysql 我這裡沒有安裝,所以什麼也沒有,如果有其他版本,需要刪除,防止衝突 2 刪除系統自帶的...

Redis 手把手教你搭建Redis集群

redis cluster 即 redis 集群,是 redis 官方在 3.0 版本推出的一套分布式儲存方案。完全去中心化,由多個節點組成,所有節點彼此互聯。redis 客戶端可以直接連線任何一節點獲取集群中的鍵值對,不需要中間 如果該節點不存在使用者所指定的鍵值,其內部會自動把客戶端重定向到鍵值...

手把手教你寫乙個ORM(二)

昨夜一夜未睡,本來以為下班回家能倒下就打呼嚕的,結果吃了晚飯後反而清醒起來了,於是決定把本打算明天寫的部分提前。半夜三更不睡覺幹嘛?出來假扮王祖賢阿 根據前面的需求,我們發現需要將配置檔案抽象出乙個元件出來,快取需要乙個單獨的元件,為了適應不同的資料庫需要做成乙個外掛程式架構的,為不同資料庫插入不同...