这篇帖子接我的上篇帖子:VS2017下用C++调用Point Grey相机采集视频帧
应项目要求,调用相机后要将相机采集的视频按帧存储在Redis里,在网上各种帖子里奔波了一整天,感觉用C++来操作redis不是一个很常见的事儿,尤其是在windows下,因为网上比较好的帖子都是在Linux下进行的。辗转反合,搞出来了,这个过程值得记录一下。
Redis官方推荐的cpp库有很多,我首先尝试了hiredis,因为网上关于它的帖子最多,而后又试了试Redis plus plus和cpp_redis,试来试去都没成功,最终还是选择了hiredis。
一、Redis的安装
如何安装Redis,大家可以参考这篇帖子——超级好用的Redis安装方法 选择Zip压缩包方式下载安装。Redis安装完成后,是看不见但能摸着的,一起来摸一摸吧!
1. win + R后输入cmd;
2. 在cmd中输入以下指令,目的是进入到Redis的安装目录,如下图所示:
- d: ——进入安装Redis的磁盘
- cd win_redis——进入存放Redis的文件夹(我的文件夹名称是win_redis)
- 输入 redis-server 来启动Redis服务,呈现出的结果像这样:
以上三条指令就可以启用Redis服务了,不用像我刚刚贴出的帖子里那样冗杂。
想要测试一下Redis是否成功连接,不要关掉上面这个cmd窗口,有它在Redis才可以提供服务。重新打开一个cmd,输入 redis-cli 就可以了,如图:
输入PING,得到PONG!说明成功了!
二、hiredis的编译配置
参考这篇帖子——hireds的配置 这篇帖子的大体流程是正确的,大家可以安心参考。接下来我以我的win_redis作为示例:
使用VS打开.sln文件,这是工程文件,咱们只需要它就可以,其它看起来超级多的文件可以完全忽略。打开之后,右键整个项目并选择“生成解决方案时”,如果你和我一样使用的是VS2017,则肯定会出现报错,这是平台工具集版本的问题,我下载的win_redis原本是在VS2019上的,它默认是v142平台,但VS2017是V141,此时我们换一下每个项目的平台工具集,就像:
换成自己VS版本的平台工具集就可以了,我的是v141,其它设置应该不用改!我自己在生成解决方案的时候出现了缺少Spinnakerd_v140.lib,如果大家出现类似缺少.lib的错误,这也是“包含目录”、“库目录”、“链接器-附加依赖项”没有正确配置的原因,缺哪个就下载那个,和hiredis的配置方式一样。
生成解决方案的目的是得到链接VS2017和hiredis的两个文件:hiredis.lib、Win32_Interop.lib。至此,我们需要的文件和链接库都有了,接下来就是配置VS了。
在自己项目属性下的VC++目录分别配置“包含目录”和“库目录” ,需要在“包含目录”添加:
这两条路径,大家换成自己的路径就可以了,主要把src和deps放进去就好了。
需要在“库目录” 添加:
VC++目录已经配好了,关掉它。打开“链接器”,在“输入”中的“附加依赖项”添加hiredis.lib、Win32_Interop.lib如图:
至此为止,我们在VS中已经配置好hiredis了,我们可以通过VS来操作Redis数据库了!
在这里放一段验证代码,大家可以试试自己的VS有没有把hiredis配置成功。
#include <iostream>
#include <hiredis.h>
using namespace std;
int main() {
// 初始化 Redis 连接
redisContext *redis = redisConnect("localhost", 6379);
if (redis == NULL || redis->err) {
if (redis) {
printf("Error: %s\n", redis->errstr);
}
else {
printf("Can't allocate redis context\n");
}
return 1;
}
printf("Connected to Redis!\n");
// 关闭 Redis 连接
redisFree(redis);
return 0;
}