linux下Redis以及c 操作

2022-06-17 20:42:13 字數 3490 閱讀 4165

上篇部落格已經寫過,為了清楚的演示,再寫一遍。

tar -zxvf redis-2.8.7.tar.gz

cd redis-2.8.7

sudo apt-getinstall tcl(redis測試程式需要tcl版本至少為8.5)

make 32bit(64位系統直接使用make即可)

sudo make prefix=/usr/local/redis install(預設sudo make install將編譯生成的可執行檔案拷貝到/usr/local/redis/bin目錄下;prefix更改一下目錄)

把redis-2.8.7目錄中的redis.conf複製到/usr/local/redis/bin目錄,有的道友喜歡放在

/bin目錄下,只要自己額能找到就可以了。

make test(用於確認安裝正確與否)

編譯生成的可執行檔案有:

1. redis-server redis伺服器

2. redis-cli redis客戶端

3. redis-benchmark redis效能測試工具

4. redis-check-aof aof檔案修復工具

5. redis-check-dump rdb檔案檢查工具

6. redis-sentinel redis集群管理工具

編譯、安裝完成後,在終端中輸入redis-server以最簡單的方式啟動redis服務端,然後在另乙個終端中輸入redis-cli來連線redis服務端,接下來可以嘗試各種命令了,可以在預習下redis的各種命令,還可以在redis官網檢視redis支援的命令。

git clone 

cd hiredis

make

sudo make install(複製生成的庫到/usr/local/lib目錄下)

sudo ldconfig /usr/local/lib

hiredis是redis資料庫的c介面,目前只能在linux下使用,幾個基本的函式就可以操作redis資料庫了。

函式原型:rediscontext *redisconnect(const char *ip, int port);

說明:該函式用來連線redis

資料庫,引數為資料庫的ip位址和埠,一般redis資料庫的埠為6379;

函式返回值:該函式返回乙個結構體rediscontext;

類似的提供了乙個函式rediscontext* redisconnectwithtimeout(const char *ip, int port, timeval tv),以帶有超時的方式連線redis伺服器,同時獲取與redis連線的上下文物件。

函式原型:void *rediscommand(rediscontext *c, const char *format, ...);

說明:該函式執行命令,就如sql資料庫中的sql語句一樣,只是執行的是redis資料庫中的操作命令,第乙個引數為連線資料庫時返回的rediscontext,剩下的引數為變參,就如c標準函式printf函式一樣的變參。

函式返回值:返回值為void*,一般強制轉換成為redisreply型別,以便做進一步處理。

函式原型void freereplyobject(void *reply);

說明:釋放rediscommand執行後返回的redisreply所占用的記憶體;

函式返回值:無。

函式原型:void redisfree(rediscontext *c);

說明:釋放redisconnect()所產生的連線。

函式返回值:無。

下面用乙個簡單的例子說明:

#include #include #include #include #include #include #include void dotest()  

printf("connect to redisserver success\n");

const char* command1 = "set stest1 value1";

redisreply* r = (redisreply*)rediscommand(c, command1);

if( null == r)

if( !(r->type == redis_reply_status && strcasecmp(r->str,"ok")==0))

freereplyobject(r);

printf("succeed to execute command[%s]\n", command1);

const char* command2 = "strlen stest1";

r = (redisreply*)rediscommand(c, command2);

if ( r->type != redis_reply_integer)

int length = r->integer;

freereplyobject(r);

printf("the length of 'stest1' is %d.\n", length);

printf("succeed to execute command[%s]\n", command2);

const char* command3 = "get stest1";

r = (redisreply*)rediscommand(c, command3);

if ( r->type != redis_reply_string)

printf("the value of 'stest1' is %s\n", r->str);

freereplyobject(r);

printf("succeed to execute command[%s]\n", command3);

const char* command4 = "get stest2";

r = (redisreply*)rediscommand(c, command4);

if ( r->type != redis_reply_nil)

freereplyobject(r);

printf("succeed to execute command[%s]\n", command4);

redisfree(c);

}

int main()

官網中文官網

開發版本原始碼

命令參考

系類文章

設計與實現

注釋版redis原始碼

Wamp 以及 Linux 下使用 Redis

資料表中資料達到萬條以及訪問量增高,來使用 redis 來提高 高可用訪問。wamp下的使用 1 尋找對應版本並安裝 redis 和 igbinary 2 使用 進入對應位數目錄下執行 開啟 redis redis server.exe redis.conf 開啟新視窗,還在原來的redis目錄下執...

Redis的簡介以及Linux下redis環境安裝

redis的特點 linux環境安裝redis環境 2.解壓至linux系統中 3.安裝gcc yum install y gcc 4.執行make命令 make malloc lib 我使用的是寶塔面板一鍵安裝,所以上面的步驟都可以省略 寶塔面板安裝 在它的資料夾下 www檔案下的server資料...

Redis資料結構以及Strings型操作

redis資料結構圖 strings型 keys 檢視所有key get 獲取key的value值 向key對應的value追加內容 判斷key是否存在,存在返回 1,不存在返回 當key存在會把 key原來的值覆蓋 當該key存在,不覆寫掉該原值,如果 key不存在,則建立 支援同時插入多個key...