Windows 7下vc2010编译使用redis 3.0

本文介绍了在Windows 7环境下,如何使用vc2010编译Redis 3.0及其依赖库hiredis。详细步骤包括:修改源代码以适配vc2010,如处理vector初始化、for(auto ...)语句和变长参数模板,以及编译各个组件如libjemalloc、lua和RedisBenchmark。文章还提供了编译后的使用示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Windows 7下vc2010编译使用redis 3.0

项目中,有多台机器频繁读写、同步一些参数。起初的方案是通过MySQL的临时表实现,对效率有一些影响,故改为redis方案。项目中redis和web、mysql是linux平台,客户端是windows 7平台C++应用进程、操作LoRa等硬件设备。

1. 编译hiredis

按网络上多篇博文的描述,C++环境下访问redis需要使用hiredis库。从下载的redis3.0源代码中发现,hiredis已集成在了项目中,如下是redis3.0的目录结构:
├─deps
├─msvs
│ ├─hiredis
│ ├─lua
│ ├ ……
│ ├─Samples
│ ├─setups
│ └─tools
├─src
│ └─Win32_Interop
├─tests
└─utils

其中,msvc目录下有个hiredis.vcxproj文件,src目录下有Win32_Interop.vcxproj文件,这两个是C++客户端需要调用的库文件。

注意,这两个.vcxproj工程是vc2012版本的,源码使用了一些Cxx11的语法,如自动推导、变长参数模板、常量成员赋值等,因此,需要对源代码做一些小改动。

1.1 编译Win32_Interop.vcxproj

添加到解决方案中,然后,在“属性->平台属性->常规”中将“平台工具集”由v120变更为v100,“配置类型”为“静态库(.lib)”;
编译,报告大量的编译错误。别紧张,这些错误其实都有共性,用vim正则表达式替换下就好。

(1) 对vector直接初始化赋值的小改动

Win32_CommandLine.cpp中,有如下代码:

static RedisParamterMapper g_redisArgMap = {...};

解决:
写个loader类,在其构造函数中对该变量赋值,然后,定义一个全局的loader变量,例如;

class g_redisArgMap_loader {
public:
	g_redisArgMap_loader() 
	{
		// QFork flags
		g_redisArgMap.insert(std::pair<string, ParamExtractor*>(cQFork,	&fp2));	// qfork [QForkControlMemoryMap handle] [parent process id]
		...
	}
	...
};
static g_redisArgMap_loader g_redisArgMap_loader_object = 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值