Visual Studio 2010 配置Redis
下载Redis开发包
下载地址:https://codeload.github.com/MicrosoftArchive/redis/zip/2.8
编译redis
解压下载包,在msvs目录下打开RedisServer.sln工程,编译hredis项目:
注意项目的运行库配置,保证使用该库的项目配置和其一致:
项目环境配置
新建一个控制台项目RedisTest,将redis-2.8\deps\hiredis目录拷贝到工程上一级目录,在工程上一级目录新建libd目录和lib目录,分别放入编译成功的hiredis.lib(debug的在redis-2.6\msvs\Debug目录中;release的在redis-2.6\msvs\Release目录中):
将RedisTest项目属性设置为MTd(release配置MT),在C/C+±–常规—附加包含目录下将hiredis包含进去。
在链接器—常规–附加库目录将libd路径添加进去(release配置lib)
在链接器—输入—附加依赖项加入hiredis.lib和ws2_32.lib(也可以不加)两个库
例子
以一个简单的“set test1 Test1”命令和“get test1”来进行测试。代码如下:
#include "hiredis.h"
#define NO_QFORKIMPL //这一行必须加才能正常使用
#include "win32fixes.h"
#include <string>
int main()
{
//套接字初始化
WSADATA wsaData;
int nRet;
if ((nRet = WSAStartup(MAKEWORD(2, 2), &wsaData)) != 0)
{
printf("WSAStartup failed\n");
exit(0);
}
//redis默认监听端口为6387 可以在配置文件中修改
redisContext* connect_context_ = redisConnect("127.0.0.1", 6379);
if (connect_context_->err)
{
printf("Connect to redisServer faile:%s\n", connect_context_->errstr);
redisFree(connect_context_);
return -1;
}
printf("Succeed to connect to redisServer \n", connect_context_->errstr);
//设置一个string
std::string strCmd = "set test1 Test1";
{
redisReply* r = (redisReply*)redisCommand(connect_context_, strCmd.c_str());
if (NULL == r)
{
printf("Execut command1 failure\n");
return REDIS_ERR;
}
if (!(r->type == REDIS_REPLY_STATUS && (strcmp(r->str, "OK") == 0 || strcmp(r->str, "ok") == 0)))
{
printf("Failed to execute command[%s]\n", strCmd.c_str());
freeReplyObject(r);
return REDIS_ERR;
}
freeReplyObject(r);
printf("Succeed to execute command[%s]\n", strCmd.c_str());
}
//取值
strCmd = "get test1";
{
redisReply* r = (redisReply*)redisCommand(connect_context_, strCmd.c_str());
if (NULL == r)
{
printf("Execut command1 failure\n");
return REDIS_ERR;
}
if (r->type != REDIS_REPLY_STRING)
{
printf("Failed to execute command[%s]\n", strCmd.c_str());
freeReplyObject(r);
return REDIS_ERR;
}
std::string strTemp = r->str;
freeReplyObject(r);
printf("Succeed to execute command[%s], value = %s\n", strCmd.c_str(), strTemp.c_str());
}
return 0;
}
运行redis服务端(如果不会请参见我另一篇博客Windows下redis环境搭建),执行RedisTest,运行结果如下:
可以再用redis客户端验证一下: