hiredis相关库的介绍就不做详细说明了,搜索就可以找到更加详细的说明。 此篇文章主要是介绍hiredis的使用,以及本人在使用时遇到的问题和解决办法。
首先下载安装windows redis server. 可以参考
http://my.oschina.net/lujianing/blog/204103。 里面介绍的还是挺详细的。
其次下载hiredis相关文件及静态库,地址为:http://pan.baidu.com/s/1kUkiBw7
里面包含了win32fixes.h,win32fixes.c, hiredis.lib,和使用到的头文件redis文件夹。
使用:
1. 连接redis函数: redisContext *redisConnect(const char *ip, int port);
2. 链接成功后,就可以开始执行各种命令了,执行命令的函数: void *redisCommand(redisContext *c, const char *format, …);
然后就可以通过redisCommand执行各类命令了,常用的命令有:
AUTH “redispwd” //授权认证密码。 如果redis设置了密码,只有认证成功后才可以执行其他命令
SET “key” “value” //设置key,value到redis
GET “key” //通过key去Get对应的value
…
等等命令都可以通过这个函数执行。
3. 释放redisCommand函数返回的redisReply结构体:void freeReplyObject(void *reply);
遇到的问题:
1.遇到如下问题,解决办法是添加 #pragma comment(lib, “ws2_32.lib”),
kRedis.obj : error LNK2001: 无法解析的外部符号 __imp__WSAStartup@8
1>win32fixes.obj : error LNK2001: 无法解析的外部符号 __imp__WSAStartup@8
1>win32fixes.obj : error LNK2001: 无法解析的外部符号 __imp__setsockopt@20
1>hiredis.lib(hiredis.obj) : error LNK2001: 无法解析的外部符号 __imp__send@16
1>hiredis.lib(hiredis.obj) : error LNK2001: 无法解析的外部符号 __imp__closesocket@4
1>hiredis.lib(hiredis.obj) : error LNK2001: 无法解析的外部符号 __imp__recv@16
1>hiredis.lib(hiredis.obj) : error LNK2001: 无法解析的外部符号 __imp__WSAGetLastError@0
1>hiredis.lib(net.obj) : error LNK2001: 无法解析的外部符号 __imp__getsockopt@20
1>hiredis.lib(net.obj) : error LNK2001: 无法解析的外部符号 __imp__gethostbyname@4
1>hiredis.lib(net.obj) : error LNK2001: 无法解析的外部符号 ___WSAFDIsSet@8
1>hiredis.lib(net.obj) : error LNK2001: 无法解析的外部符号 __imp__socket@12
1>hiredis.lib(net.obj) : error LNK2001: 无法解析的外部符号 __imp__htons@4
1>hiredis.lib(net.obj) : error LNK2001: 无法解析的外部符号 __imp__select@20
1>hiredis.lib(net.obj) : error LNK2001: 无法解析的外部符号 __imp__inet_addr@4
1>hiredis.lib(net.obj) : error LNK2001: 无法解析的外部符号 __imp__connect@12
1>hiredis.lib(net.obj) : error外部符号 __imp__ioctlsocket@12`
注意的是记得初始化ws2_32库。 否则会连不上redis
2.问题如下, 解决办法: 工程->属性->C/C++->预编译头->预编译头关闭。
1>*\win32fixes.c : fatal e,或者预编译编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反)编+ 而在 C 中使用它(或相反)
完整流程:
1.创建你的项目
2.将win32fixes.h,win32fixes.c加入到你的项目中
3.将工程的预编译头关闭
4.在使用的地方加上如下代码
#include “redis/hiredis.h”
#pragma comment(lib, “ws2_32.lib”)
#pragma comment(lib,”hiredis.lib”)
5.初始化时,初始化ws2_32。
6.执行redisConnect
7.随心所欲执行redisCommand
上代码:
= timeout *1000;
“`