国产探花免费观看_亚洲丰满少妇自慰呻吟_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; }  

執行結果為:

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 偃师市| 平度市| 铜川市| 南溪县| 湘西| 皮山县| 高邮市| 福泉市| 湟源县| 长汀县| 大邑县| 宁陵县| 黄梅县| 崇仁县| 凤阳县| 额尔古纳市| 长寿区| 东阿县| 桦南县| 即墨市| 宾川县| 闸北区| 全州县| 军事| 三门峡市| 敦化市| 新竹市| 平邑县| 靖远县| 教育| 略阳县| 临泽县| 莱阳市| 宁国市| 兴安盟| 崇信县| 成都市| 永川市| 湖口县| 宣威市| 南乐县|