发布时间:2025-12-10 11:27:21 浏览次数:3
在我们使用redis进行学习的过程中,在Windows平台上进行学习是一个非常高效的选择,因此下面介绍如何在Windows环境下搭建一个redis环境(即可Debug调试进入源码环境,也可F12跳转到对应redis的API实现)并进行简单使用的步骤。
参考文章及资源地址:
http://c.biancheng.net/redis/windows-installer.html
https://github.com/tporadowski/redis/releases
https://blog.csdn.net/RYIJU5YUJTY/article/details/125129462
https://blog.csdn.net/RYIJU5YUJTY/article/details/125129558
https://blog.csdn.net/iamohenry/article/details/105789333
https://github.com/microsoftarchive/redis
TIPS:redis环境搭建需要两个lib库,分别为hiredis.lib、Win32_Interop.lib。
首先使用Visual Studio 2017新建一个空项目,如下:
右键生成这个子项目。
这里抛出一个错误,原因是子项目无法找到该文件,故在3rd文件夹下新建一个src文件夹引入redis源码库,如下:
将整个redis源码都复制至3rd/src下。
最后右键属性生成即可。
紧接着配置子项目Test,先新建一个main.cpp文件,然后配置子项目Test的属性面板。
将导出的lib库放入3rd/lib文件夹下,如下:
最后,在main.cpp中编辑如下简单应用代码,右键生成即可。
#include <iostream>#include "hiredis.h"using std::cout;using std::endl;using std::cin;int main() {redisContext* c = redisConnect("127.0.0.1", 6379);if (c->err) {cout << "Connect to redisServer faild " << c->errstr << endl;redisFree(c);return 0;}cout << "Connect to redisServer Success" << endl;//为redis 设置keyconst char* command1 = "set stest1 goodgoodgoodgood";//执行redis命令行redisReply* ret = (redisReply*)redisCommand(c, command1);//如果返回为NULL,标识执行失败if (NULL == ret) {cout << "Exec command1 faile" << endl;redisFree(c);return 0;}//如果执行失败则释放连接if (!(ret->type == REDIS_REPLY_STATUS &&(strcmp(ret->str, "OK") == 0 || strcmp(command1, "ok") == 0))) {cout << "Failed to exec command " << command1 << endl;freeReplyObject(ret);redisFree(c);return 0;}//执行成功,释放redisCommand执行后的返回对象redisReply所占用的空间freeReplyObject(ret);ret = nullptr;cout << "Succeed to exec command " << command1 << endl;command1 = "strlen stest1";ret = (redisReply*)redisCommand(c, command1);//如果返回类型不是整型,那么释放连接if (ret->type != REDIS_REPLY_INTEGER) {cout << "Failed to exec command " << command1;freeReplyObject(ret);redisFree(c);return 0;}//获取字符串长度int length = ret->integer;freeReplyObject(ret);ret = nullptr;cout << "The length of 'stest1' is " << length << endl;cout << "Succeed to exec command " << command1 << endl;//获取redis键值对信息command1 = "get stest1";ret = (redisReply*)redisCommand(c, command1);if (ret->type != REDIS_REPLY_STRING) {cout << "Failed to exec command " << command1;freeReplyObject(ret);redisFree(c);return 0;}cout << "The Value of 'stest1' is " << ret->str << endl;freeReplyObject(ret);ret = nullptr;cout << "Succeed to exec command " << command1 << endl;//testcommand1 = "get stest2";ret = (redisReply *)redisCommand(c, command1);if (ret->type == REDIS_REPLY_NIL) {printf("Failed to execute command[%s]\n", command1);freeReplyObject(ret);redisFree(c);return 0;}freeReplyObject(ret);ret = nullptr;printf("Succeed to execute command[%s]\n", command1);//释放连接资源redisFree(c);return 0;}如果测试呢?只需下载redis服务器本地局域网内运行即可。下载链接:https://github.com/tporadowski/redis/releases
运行redis-server.exe,然后再运行我们的Test子项目即可测试。
三个子项目中运行库都必须为多线程调试DLL(/MDd)模式,否则生成会出错。