C++使用redis的實例詳解
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, ...);
說明:該函數執(zhí)行命令,就如sql數據庫中的SQL語句一樣,只是執(zhí)行的是redis數據庫中的操作命令,第一個參數為連接數據庫時返回的redisContext,剩下的參數為變參,就如C標準函數printf函數一樣的變參。
函數返回值:返回值為void*,一般強制轉換成為redisReply類型,以便做進一步處理。
函數原型void freeReplyObject(void *reply);
說明:釋放redisCommand執(zhí)行后返回的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默認監(jiān)聽端口為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;
}
執(zhí)行結果為:
如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
上一篇:C語言結構數組實現貪吃蛇小游戲
欄 目:C語言
下一篇:C經典算法之二分查找法
本文標題:C++使用redis的實例詳解
本文地址:http://www.jygsgssxh.com/a1/Cyuyan/1118.html
您可能感興趣的文章
- 04-02func函數+在C語言 func函數在c語言中
- 04-02c語言沒有round函數 round c語言
- 01-10使用OpenGL實現3D立體顯示的程序代碼
- 01-10深入理解C++中常見的關鍵字含義
- 01-10使用C++實現全排列算法的方法詳解
- 01-10深入Main函數中的參數argc,argv的使用詳解
- 01-10c++中inline的用法分析
- 01-10用C++實現DBSCAN聚類算法
- 01-10全排列算法的非遞歸實現與遞歸實現的方法(C++)
- 01-10C++大數模板(推薦)


閱讀排行
本欄相關
- 04-02c語言函數調用后清空內存 c語言調用
- 04-02func函數+在C語言 func函數在c語言中
- 04-02c語言的正則匹配函數 c語言正則表達
- 04-02c語言用函數寫分段 用c語言表示分段
- 04-02c語言中對數函數的表達式 c語言中對
- 04-02c語言編寫函數冒泡排序 c語言冒泡排
- 04-02c語言沒有round函數 round c語言
- 04-02c語言分段函數怎么求 用c語言求分段
- 04-02C語言中怎么打出三角函數 c語言中怎
- 04-02c語言調用函數求fibo C語言調用函數求
隨機閱讀
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 08-05dedecms(織夢)副欄目數量限制代碼修改
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 01-10C#中split用法實例總結
- 04-02jquery與jsp,用jquery
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 01-11ajax實現頁面的局部加載
- 01-10delphi制作wav文件的方法
- 01-10SublimeText編譯C開發(fā)環(huán)境設置
- 08-05織夢dedecms什么時候用欄目交叉功能?


