linux下redis的安裝,使用

2021-06-25 12:36:31 字數 3855 閱讀 2074



redis:

2.make編譯

3.設定配置檔案redis.config,在src目錄去執行啟動 : ./redis-server  ../redis.config  後面可以加上配置檔案實現讓伺服器後台執行,成為守護程序

4.登陸客戶端,同樣在src目錄 ./redis-cli   也可以telnet  ip   port不過輸出鍵值對的時候有個$2

5.寫程式的時候需要使用redis的api,方法,在hiredis目錄下生產乙個靜態庫檔案libhiredis.a,把頭檔案放進/usr/include,靜態庫檔案放進/lib,編譯檔案的時候加上-lhiredis,就可以使用了,動態庫也是類似的呼叫方法

c語言連線插入redis例項:    

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

const char* command1 = "set stest1 value9";

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

//需要注意的是,如果返回的物件是null,則表示客戶端和伺服器之間出現嚴重錯誤,必須重新鏈結。

//這裡只是舉例說明,簡便起見,後面的命令就不再做這樣的判斷了。

if (null == r)

//不同的redis命令返回的資料型別不同,在獲取之前需要先判斷它的實際型別。

//至於各種命令的返回值資訊,可以參考redis的官方文件,或者檢視該系列部落格的前幾篇

//有關redis各種資料型別的部落格。:)

//字串型別的set命令的返回值的型別是redis_reply_status,然後只有當返回資訊是"ok"

//時,才表示該命令執行成功。後面的例子以此類推,就不再過多贅述了。

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);

//這裡需要先說明一下,由於stest2鍵並不存在,因此redis會返回空結果,這裡只是為了演示。

if (r->type != redis_reply_nil)

freereplyobject(r);

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

const char* command5 = "mget stest1 stest2";

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

//不論stest2存在與否,redis都會給出結果,只是第二個值為nil。

//由於有多個值返回,因為返回應答的型別是陣列型別。

if (r->type != redis_reply_array)

int i;

for (i = 0; i < r->elements; ++i)

//對於每乙個子應答,無需使用者單獨釋放,只需釋放最外部的redisreply即可。

freereplyobject(r);

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

printf("begin to test pipeline.\n");

//該命令只是將待傳送的命令寫入到上下文物件的輸出緩衝區中,直到呼叫後面的

//redisgetreply命令才會批量將緩衝區中的命令寫出到redis伺服器。這樣可以

//有效的減少客戶端與伺服器之間的同步等候時間,以及網路io引起的延遲。

//至於管線的具體效能優勢,可以考慮該系列部落格中的管線主題。

redisfree(c);

return;

}*/ redisreply* reply = null;

//對pipeline返回結果的處理方式,和前面**的處理方式完全一直,這裡就不再重複給出了。

if (redis_ok != redisgetreply(c,(void**)&reply))

freereplyobject(reply);

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

if (redis_ok != redisgetreply(c,(void**)&reply))

freereplyobject(reply);

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

if (redis_ok != redisgetreply(c,(void**)&reply))

freereplyobject(reply);

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

if (redis_ok != redisgetreply(c,(void**)&reply))

freereplyobject(reply);

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

if (redis_ok != redisgetreply(c,(void**)&reply))

freereplyobject(reply);

printf("succeed to execute command[%s] with pipeline.\n",command5);

//由於所有通過pipeline提交的命令結果均已為返回,如果此時繼續呼叫redisgetreply,

//將會導致該函式阻塞並掛起當前執行緒,直到有新的通過管線提交的命令結果返回。

//最後不要忘記在退出前釋放當前連線的上下文物件。

redisfree(c);

return; }

int main()

memcache:

gcc原始碼編譯:

Linux下Redis下安裝

redis安裝 檢查是否安裝redis ps ef grep redis2.檢查gcc服務是否安裝成功 rpm qa grep gcc注 安裝成功則顯示 mkdir redis5.解壓redis安裝包 tar zxvf redis 2.8.17 tar.gz c usr local redis 解壓...

linux下redis的安裝

第一部分 安裝redis 希望將redis安裝到此目錄 1 usr local redis 1 usr local src 那麼安裝過程指令如下 ln s redis 2.6.14 redis 建立乙個鏈結 cd redis make prefix usr local redis install 安...

Linux下Redis的安裝

linux下redis的安裝 redis是當前比較熱門的nosql系統之一,它是乙個key value儲存系統。和memcached類似,但很大程度補償了memcached的不足,它支援儲存的value型別相對更多,包括string list set zset和hash。這些資料型別都支援push ...