Visual Studio 2010 配置Redis

版权声明:本文为博主原创文章,如需转载请注明出处 https://blog.csdn.net/bajianxiaofendui/article/details/87650221

下载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客户端验证一下:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/bajianxiaofendui/article/details/87650221