国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++使用redis的實例詳解

2020-01-26 13:53:09
字體:
來源:轉載
供稿:網友

C++使用redis的實例詳解

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 <stdio.h> #include <stdlib.h> #include <stddef.h> #include <stdarg.h> #include <string.h> #include <assert.h> #include <hiredis/hiredis.h>  void doTest() {   //redis默認監聽端口為6387 可以再配置文件中修改   redisContext* c = redisConnect("127.0.0.1", 6379);   if ( c->err)   {     redisFree(c);     printf("Connect to redisServer faile/n");     return ;   }   printf("Connect to redisServer Success/n");      const char* command1 = "set stest1 value1";   redisReply* r = (redisReply*)redisCommand(c, command1);      if( NULL == r)   {     printf("Execut command1 failure/n");     redisFree(c);     return;   }   if( !(r->type == REDIS_REPLY_STATUS && strcasecmp(r->str,"OK")==0))   {     printf("Failed to execute command[%s]/n",command1);     freeReplyObject(r);     redisFree(c);     return;   }     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)   {     printf("Failed to execute command[%s]/n",command2);     freeReplyObject(r);     redisFree(c);     return;   }   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("Failed to execute command[%s]/n",command3);     freeReplyObject(r);     redisFree(c);     return;   }   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)   {     printf("Failed to execute command[%s]/n",command4);     freeReplyObject(r);     redisFree(c);     return;   }   freeReplyObject(r);   printf("Succeed to execute command[%s]/n", command4);           redisFree(c);    }  int main() {   doTest();   return 0; }  

執行結果為:

如有疑問請留言或者到本站社區交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 高淳县| 崇明县| 凤山市| 固安县| 颍上县| 兴城市| 临潭县| 临湘市| 新邵县| 阳曲县| 平顶山市| 五莲县| 大厂| 浦北县| 岚皋县| 额尔古纳市| 奉节县| 雅安市| 高安市| 田东县| 东平县| 噶尔县| 南安市| 大厂| 怀仁县| 内乡县| 鄂温| 环江| 赤城县| 大连市| 平阳县| 广水市| 申扎县| 雅江县| 嘉义市| 水城县| 洪洞县| 方城县| 日土县| 沙田区| 化隆|