hiredis从安装到项目实战操作
Hiredis是一个Redis的C客户端库函数,基本实现了Redis的协议的最小集。
花个两分钟跟我一起配置hiredis
当我们下载了最新版redis的时候,其实就已经自带了C++版本的操作库,只不过有些人没发现罢了。
进入到deps->hiredis目录下(在你的redis解压目录下有deps)
然后:makeinstall
一步到位。
其实连测试函数他们都给你准备好了,在hedis文件夹中还有个文件夹,example,里面有个example.c文件。
这样编译,如果不会的话:首先需要把里面的头文件改一下:#include
编译的时候记得带上依赖项:
gccexample.c-oexample-L/usr/local/lib-lhiredis
当你运行的时候,(别给我说你不会运行:./example)如果不出意外,会跟你说依赖项找不着。
正常,教你一个治标的办法:
在/etc/ld.so.conf.d/目录下新建文件usr-libs.conf,内容是:/usr/local/lib
然后使用命令/sbin/ldconfig更新一下配置即可。
这东西配置完,你虚拟机重启之后就没了,永久配置好像在我的另一篇博客里有,动态库专栏下。
最后的运行效果:
redis的C/C++API
redisContext*redisConnect(constchar*ip,intport);
参数释义:
该函数用来连接redis数据库,两个参数分别是redis数据库的ip和端口,端口号一般为6379。
void*redisCommand(redisContext*c,constchar*format...);
该函数用于执行redis数据库中的命令,第一个参数为连接数据库返回的redisContext,剩下的参数为变参.。
此函数的返回值为void*,但是一般会强制转换为redisReply类型,以便做进一步的处理。
voidfreeReplyObject(void*reply);
释放redisCommand执行后返回的的redisReply所占用的内存。
voidredisFree(redisContext*c)
释放redisConnect()所产生的连接。
实操代码示例
#include#include #include #include intmain(intargc,char**argv){ unsignedintj,isunix=0; redisContext*c; redisReply*reply; : constchar*hostname=(argc>1)?argv[1]:"127.0.0.1"; if(argc>2){ if(*argv[2]=='u'||*argv[2]=='U'){ isunix=1; /*inthiscase,hostisthepathtotheunixsocket*/ printf("Willconnecttounixsocket@%s\n",hostname); } } intport=(argc>2)?atoi(argv[2]):6379; structtimevaltimeout={1,500000};//1.5seconds if(isunix){ c=redisConnectUnixWithTimeout(hostname,timeout); //该函数用来连接redis数据库,两个参数分别是redis数据库的ip和端口,端口号一般为6379。 }else{ c=redisConnectWithTimeout(hostname,port,timeout); } if(c==NULL||c->err){ if(c){ printf("Connectionerror:%s\n",c->errstr); redisFree(c); //释放redisConnect()所产生的连接。 }else{ printf("Connectionerror:can'tallocaterediscontext\n"); } exit(1); } /*PINGserver*/ reply=redisCommand(c,"PING"); //该函数用于执行redis数据库中的命令,第一个参数为连接数据库返回的redisContext,剩下的参数为变参.。 //此函数的返回值为void*,但是一般会强制转换为redisReply类型,以便做进一步的处理。 printf("PING:%s\n",reply->str); freeReplyObject(reply); //释放redisCommand执行后返回的的redisReply所占用的内存。 /*Setakey*/ reply=redisCommand(c,"SET%s%s","foo","helloworld"); printf("SET:%s\n",reply->str); freeReplyObject(reply); /*SetakeyusingbinarysafeAPI*/ reply=redisCommand(c,"SET%b%b","bar",(size_t)3,"hello",(size_t)5); printf("SET(binaryAPI):%s\n",reply->str); freeReplyObject(reply); /*TryaGETandtwoINCR*/ reply=redisCommand(c,"GETfoo"); printf("GETfoo:%s\n",reply->str); freeReplyObject(reply); reply=redisCommand(c,"INCRcounter"); printf("INCRcounter:%lld\n",reply->integer); freeReplyObject(reply); /*again...*/ reply=redisCommand(c,"INCRcounter"); printf("INCRcounter:%lld\n",reply->integer); freeReplyObject(reply); /*Createalistofnumbers,from0to9*/ reply=redisCommand(c,"DELmylist"); freeReplyObject(reply); for(j=0;j<10;j++){ charbuf[64]; snprintf(buf,64,"%u",j); reply=redisCommand(c,"LPUSHmylistelement-%s",buf); freeReplyObject(reply); } /*Let'scheckwhatwehaveinsidethelist*/ reply=redisCommand(c,"LRANGEmylist0-1"); if(reply->type==REDIS_REPLY_ARRAY){ for(j=0;j elements;j++){ printf("%u)%s\n",j,reply->element[j]->str); } } freeReplyObject(reply); /*Disconnectsandfreesthecontext*/ redisFree(c); return0; }
到此这篇关于hiredis从安装到项目实战操作的文章就介绍到这了,更多相关hiredis安装内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。