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 ...