UE5创建的C++项目中使用hiredis连接redis

UE5创建的C++项目中使用hiredis连接redis

UE5项目和普通C++项目使用hiredis的方式有些不一样,写个文档记录一下,傻瓜式教程,技能要求:会使用UE5创建项目,会一点C++代码

1.UE5创建C++项目,UE5版本5.1.1 ,Visual Studio 版本2022

选择游戏->空白->C++创建即可

2.github官网下载hiredis的源码,也可以直接git clone,我这里选择下载zip包

hiredis官网源码下载
在这里插入图片描述

下载解压之后目录如下

在这里插入图片描述

3.官网下载CMAKE 将源码编译程lib包和dll库

3.1 官网下载CMAKE

CMAKE官网下载地址
在这里插入图片描述
下载安装后界面如下
在这里插入图片描述

3.2使用CMAKE处理hiredis源码

处理之前先准备好源码和输出目录

在这里插入图片描述

3.3 打开CMAKE,选择源码和输出目录

在这里插入图片描述

3.4点击Configure

在这里插入图片描述

3.5 直接点击Finish

在这里插入图片描述

3.6 点击Generate

在这里插入图片描述

3.7 点击Open Project会自动用visual code打开CMAKE构件好的项目,到这一步Cmake就用完了,可以关闭了
3.8 点击Open Project会自动用visual code打开CMAKE构件好的项目

在这里插入图片描述

3.9 打开项目之后右键hiredis,直接点击生成即可,因为只需要用到hiredis,其他的模块不必理会

在这里插入图片描述
在这里插入图片描述

3.10 生成成功之后,回到输出目录hredis_out,可以发现多了一个Debug目录,里面已经生成了我们需要的库文件,到这一步hiredis源文件的处理就完成了。

在这里插入图片描述

4 重要!打开我们自己创建的UE5项目,将hiredis源码复制到Source下面,熟练的话可以自己随意放置并改名,这里为了简单就这样了。

在这里插入图片描述

5 在Source下面新建一个hiredisBuild文件夹,将刚刚hired_out目录中生成的Debug文件夹整个复制过来

在这里插入图片描述

6 将hiredisd.dll 文件复制到项目根目录下的Binaries/Win64 目录下,如果不复制过去,编译可以通过,运行会报错

在这里插入图片描述

7.回到项目代码中,需要在项目名.Build.cs文件中添加引用库的代码,我这里项目名是CTest3,所有文件名是CTest3.Build.cs,我这里直接贴出所有代码

using UnrealBuildTool;
using System.IO;//确保在文件顶部包含 System.IO 命名空间,并确认 Path 类的使用。


public class CTest3 : ModuleRules
{
	public CTest3(ReadOnlyTargetRules Target) : base(Target)
	{
		PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;

        PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "HeadMountedDisplay", "EnhancedInput"  });
        PublicDependencyModuleNames.AddRange(new string[] { "HTTP", "Json", "JsonUtilities", "VaRest" });
        PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore", "UMG" });


		//关于使用hiredis的代码在下面,上面的是一些其他代码,不必理会,使用自己创建项目时自动生成的配置即可
        // 获取当前模块的目录
        string ModulePath = ModuleDirectory;
        // 获取项目的根目录路径
        string ProjectRootPath = Path.GetFullPath(Path.Combine(ModulePath, "../../"));
        // 获取 Source 目录的路径
        string SourcePath = Path.Combine(ProjectRootPath, "Source");

        //添加include头文件目录
        PublicIncludePaths.AddRange( new string[] {Path.Combine(SourcePath, "hiredis") });
        // 添加 hiredis 的库文件路径
        PublicAdditionalLibraries.Add(Path.Combine(SourcePath, "hiredisBuild/Debug/hiredisd.lib"));

    }
}

8 随便创建一个类,可以开始使用库了

8.1 引入hiredis.h头文件

在这里插入图片描述

8.2 写具体连接redis和取值的代码

关键代码其实就两三行,1.创建连接。2.密码认证 3.取值
// 1. 连接到 Redis 服务器
redisContext* myRedisContext = redisConnect(“localhost”, 6379);
// 2. 认证 Redis,密码为 zszj2023
redisReply* reply_auth = (redisReply*)redisCommand(myRedisContext, “AUTH %s”, “zszj2023”);
// 3. 获取 TestKey 的值
redisReply* reply_get = (redisReply*)redisCommand(myRedisContext, “GET %s”, “TestKey”);
UE_LOG(LogTemp, Display, TEXT(“获取 TestKey 的值成功: %s”), UTF8_TO_TCHAR(reply_get->str));

// 1. 连接到 Redis 服务器
redisContext* myRedisContext = redisConnect("localhost", 6379);

// 检查连接是否成功
if (myRedisContext == NULL || myRedisContext->err) {
    if (myRedisContext) {
        UE_LOG(LogTemp, Display, TEXT("连接到 Redis 服务器失败: %s"), UTF8_TO_TCHAR(myRedisContext->errstr));
    }
    else {
        UE_LOG(LogTemp, Display, TEXT("无法分配 Redis 连接上下文"));
    }
}

// 2. 认证 Redis,密码为 zszj2023
redisReply* reply_auth = (redisReply*)redisCommand(myRedisContext, "AUTH %s", "zszj2023");
if (reply_auth == NULL) {
    UE_LOG(LogTemp, Error, TEXT("Redis 认证失败: %s"), UTF8_TO_TCHAR(myRedisContext->errstr));
    redisFree(myRedisContext);
}
freeReplyObject(reply_auth);

// 3. 获取 TestKey 的值
redisReply* reply_get = (redisReply*)redisCommand(myRedisContext, "GET %s", "TestKey");
if (reply_get == NULL) {
    UE_LOG(LogTemp, Error, TEXT("获取 TestKey 的值失败: %s"), UTF8_TO_TCHAR(myRedisContext->errstr));
    redisFree(myRedisContext);
}

// 检查返回值类型是否为字符串
if (reply_get->type == REDIS_REPLY_STRING) {
    UE_LOG(LogTemp, Display, TEXT("获取 TestKey 的值成功: %s"), UTF8_TO_TCHAR(reply_get->str));
}
else {
    UE_LOG(LogTemp, Error, TEXT("获取 TestKey 的值失败: 返回值类型不是字符串"));
}

freeReplyObject(reply_get);
redisFree(myRedisContext);

9 验证结果 代码写完之后点击运行项目,我这里一些乱七八糟的东曦比较多,不必理会,关注hiredis即可

在这里插入图片描述
这是redis中设置的键值
在这里插入图片描述

10 完结

  • 31
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值