当前位置:

首页 > 软件教程 > Redis 源码编译 Windows 版发布指南

Redis 源码编译 Windows 版发布指南

Redis是个高性能的键值数据库,现在日常项目开发过程中,目前个人开发项目基本都会用到Redis,主要是用来做缓存和分布式锁的底层支持,个人喜欢用.NET技术体系,所以一般部署也是用Windows服务器居多,但是目前Redis官方并没有提供Windows版本的Redis发行包,网上能找到的一些Windows版的Redis都是比较老的版本了,目前最新的Redismaster已经是7.x版本了,深入研究后发现Redis是用C语言开发的,所以还是有编译到W

本文目录

    Redis 是个高性能的键值数据库,现在日常项目开发过程中,目前个人开发项目基本都会用到 Redis,主要是用来做 缓存 和 分布式锁 的底层支持,个人喜欢用 .NET 技术体系,所以一般部署也是用 Windows 服务器居多,但是目前 Redis 官方并没有提供 Windows 版本的Redis 发行包,网上能找到的一些 Windows 版的 Redis 都是比较老的版本了,目前最新的 Redis master 已经是 7.x 版本了,深入研究后发现 Redis 是用 C 语言开发的,所以还是有编译到Windows版的可能的,这里给大家分享我编译 Windows 版 Redis 的操作。

    首先介绍以下基本思路,整体过程主要为以下几步

    获取 Redis 最新版 源码  https://github.com/redis/redis/releases安装 MSYS2 并编译 Redis 源码使用 .NET6 开发一个 RedisService 用于将 编译好的 Redis 整合成服务,支持以 Windows 服务运行

    首先我们将 Redis 的源码下载到本地文件夹,可以直接从 https://github.com/redis/redis/releases 页面下载最新版的 源码,截至目前最新版是 7.0.4 ,这里我们下载 tar.gz 格式的压缩包

    使用 Redis 源码编译发布 Windows 版 Redis For Windows 发行包

    源码下载完成之后,安装 最新版的 MSYS2 ,这是一个编译工具,可以用于在 Windows 下编译 Linux 中的一些软件,本次我们就使用他来将 Redis 的源码编译为 Windows 版本

    https://www.msys2.org 这个是官网地址,可以从这里下载

    使用 Redis 源码编译发布 Windows 版 Redis For Windows 发行包

    MSYS2 的安装过程就不展开了,下载 exe 之后直接点击下一步,下一步的操作就可以了,没有什么需要特别注意的。

    MSYS2 安装之后,从开始菜单找到MSYS2 MSYS 开始运行,进入 MSYS2 之后主要就依赖于命令行的操作了。过程中会询问是否继续,选择 Y

    #更新 MSYS2 系统

    pacman -Syu

    使用 Redis 源码编译发布 Windows 版 Redis For Windows 发行包

    # 安装 gcc make pkg-config

    pacman -Sy gcc make pkg-config

    使用 Redis 源码编译发布 Windows 版 Redis For Windows 发行包

    # 切换到编译的目录(MSYS2 /d 就是 D盘;/e 就是 E盘) 我这里预先在 D盘创建了一个 redis 空文件夹用于本次的编译操作cd /d/redis

    使用 Redis 源码编译发布 Windows 版 Redis For Windows 发行包

    将下载好的 源代码压缩包剪切到对应的编译目录,我们这里是 d:/redis/

    使用 Redis 源码编译发布 Windows 版 Redis For Windows 发行包

    # 解压 redis 源码

    tar -xvf redis-7.0.4.tar.gz

    使用 Redis 源码编译发布 Windows 版 Redis For Windows 发行包

    # 进入源码目录cd redis-7.0.4

    使用 Redis 源码编译发布 Windows 版 Redis For Windows 发行包

    然后需要到 MSYS2 的安装目录去修改 dlfcn.h 文件,具体如下:

    打开 C:\msys64\usr\include\usr\include\dlfcn.h 文件修改源码 注释或删除掉 宏判定 #if __GNU_VISIBLE (49行)和 #endif (61行) 不然会报找不到结构 Dl_info 错误。

    MSYS2 目录默认为:C:\msys64\ ,这个其实就是msys2 的安装目录,如果安装过程中修改了安装目录,则到自己对应的安装目录然后依次找到 usr 文件夹 下的 include 文件夹下的 dlfcn.h 文件即可

    使用 Redis 源码编译发布 Windows 版 Redis For Windows 发行包

    需要对这段代码注释掉 第49行和61行,如下图

    使用 Redis 源码编译发布 Windows 版 Redis For Windows 发行包

    注释之后保存退出即可,然后重新回到我们的 MSYS2 终端控制台开始进行编译 Redis

    # 编译make PREFIX=/d/redis/dist install

    使用 Redis 源码编译发布 Windows 版 Redis For Windows 发行包

    过程中会有一些警告之类的信息可以直接忽略,只要可以成功编译即可。

    编译成功之后,在电脑的 d:\redis\dist\bin 文件夹就可以看到编译后的 windows 版 exe 文件

    使用 Redis 源码编译发布 Windows 版 Redis For Windows 发行包

    编译完成后还需要复制如下三个文件

    msys-2.0.dll 位于 c:\msys64\usr\binredis.conf 位于 redis源码文件夹,d:\redis\redis-7.0.4sentinel.conf 位于 redis 源码文件夹,d:\redis\redis-7.0.4

    复制以上三个文件到我们的 d:\redis\dist\bin 文件夹

    使用 Redis 源码编译发布 Windows 版 Redis For Windows 发行包

    我们的 d:\redis\dist\bin 文件夹总共应该有这些文件。

    需要注意因为 MSYS2 的规定,我们的软件必须至少要放置在 2层目录文件夹内,才可以正常运行,比如 d:/redis/dist/bin/ 可以,d:/redis/ 则不可以。

    RedisServer 可以通过如下两种方式启动

    cmd 启动

    代码语言:javascript代码运行次数:0运行复制
    d:cd d:\redis\dist\binredis-server.exe redis.conf

    powershell 启动

    代码语言:javascript代码运行次数:0运行复制
    d:cd d:\redis\dist\bin./redis-server.exe redis.conf
    使用 Redis 源码编译发布 Windows 版 Redis For Windows 发行包

     当启动后出现上面的界面就说明我们的 redis-server 正式编译发布成功了,可以用自己习惯的 redis 连接工具去尝试连接 127.0.0.1:6379 ,我个人习惯使用 Another Redis Desktop Manager,连接之后可以看到如下面的状态信息

    使用 Redis 源码编译发布 Windows 版 Redis For Windows 发行包

    从状态如看出来是 7.0.4 的版本,至此 关于利用 Redis源码编译发布 Windows版的 Reidis 的操作就完成了,下面介绍如何结合 .NET 来开发一个 Windows 服务,为我们编译的这个 redis-server.exe 实现 windows 服务的安装运行模式。否则每次使用都要去手动启动 redis-server.exe 比较繁琐。

    首先利用 VisualStudio 创建一个 .NET 6 的控制台程序,然后在Nuget 安装 Microsoft.Windows.Compatibility 组件

    整个项目的代码不多,主要就是 Program.cs 代码内容如下:

    代码语言:javascript代码运行次数:0运行复制
    using System.Diagnostics;using System.ServiceProcess;namespace RedisService{    class Program    {        [System.Diagnostics.CodeAnalysis.SuppressMessage("Interoperability", "CA1416:验证平台兼容性", Justification = "<挂起>")]        static void Main()        {            ServiceBase.Run(new RedisService());        }    }    partial class RedisService : ServiceBase    {        private Process? process = new();        protected override void OnStart(string[] args)        {            var basePath = Path.Combine(AppContext.BaseDirectory).Replace("\\", "/");            var diskSymbol = basePath[..basePath.IndexOf(":")];            var confPath = basePath.Replace(diskSymbol + ":", "/cygdrive/" + diskSymbol);            ProcessStartInfo processStartInfo = new(basePath + "redis-server.exe", confPath + "redis.conf");            processStartInfo.WorkingDirectory = basePath;            process = Process.Start(processStartInfo);        }        protected override void OnStop()        {            if (process != null)            {                process.Kill();                process.Dispose();            }        }    }}

    发布的时候推荐如下设置:采用独立模式,启用预编译发布为单个文件

    使用 Redis 源码编译发布 Windows 版 Redis For Windows 发行包

    发布后得到如下文件

    使用 Redis 源码编译发布 Windows 版 Redis For Windows 发行包

    将发布后的文件拷贝到  d:\redis\dist\bin 文件夹和我们开始发布的 Redis 文件放到同一个目录

    使用 Redis 源码编译发布 Windows 版 Redis For Windows 发行包

    这样我们整个 RedisServer 就制作完成了,可以把这些文件全部打包保存起来,将来想要安装到某台电脑时,只要执行如下的 安装,卸载,启动,停止 命令即可

    假设 我们将这个文件夹放在了 d:/Software/Redis/

    需要注意因为 MSYS2 的规定,我们的软件必须至少要放置在 2层目录文件夹内,才可以正常运行,比如 d:/Software/Redis/ 可以,d:/Software/ 则不可以。

    安装服务

    sc.exe create Redis binpath= 'D:\Software\Redis\RedisService.exe' start= auto

    这样就把成功把我们自己制作的 Windows版Redis安装好了,每次开机都会自动启动

    启动服务

    net start Redis

    停止服务

    net stop Redis

    卸载服务

    sc.exe delete Redis

    至此 使用 Redis 源码编译发布 Windows 版 Redis For Windows 发行包 就讲解完了,有任何不明白的,可以在文章下面评论或者私信我,欢迎大家积极的讨论交流,有兴趣的朋友可以关注我目前在维护的一个 .net 基础框架项目,项目地址如下

    https://github.com/berkerdong/NetEngine.git

    https://gitee.com/berkerdong/NetEngine.git

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    软件教程
    相关文章 更多
    typora怎么高亮 文本标记语法设置
    typora怎么高亮 文本标记语法设置

    本教程演示如何在 Windows 版 Typora 中开启 Highlight 高亮功能,通过双等号语法标记重点文本,并展示如何编辑、取消高亮及验证源码保存状态。

    讯飞智作平台 在线创作功能介绍
    讯飞智作平台 在线创作功能介绍

    了解讯飞智作平台的在线创作流程:从文字配音到数字人视频生成,再到AIGC工具箱的素材处理。通过具体案例演示如何选择合适的功能入口、调整参数及核对成品权益,适合需要快速制作音频或播报视频的用户参考。

    gemini 官网 入口网页版登录访问方法
    gemini 官网 入口网页版登录访问方法

    本文详细介绍 Gemini 官方网页版入口地址、个人与组织账号登录流程、运行环境要求、账号体系差异对比及常见访问异常的排查解决方法。

    正版steam官网入口登录下载安装操作教程
    正版steam官网入口登录下载安装操作教程

    针对初次接触Steam平台的玩家,提供正版Steam官网网址识别、客户端官方安装包下载、本地安装配置及账号安全注册登录的详细图文操作教程。

    鼠标宏设置软件怎么设置?详细操作教程
    鼠标宏设置软件怎么设置?详细操作教程

    针对各类支持驱动配置的鼠标,系统梳理鼠标宏设置软件的核心设置逻辑、全流程操作步骤、运行模式选择与排错验证方法,帮助读者准确掌握宏功能的配置与使用。

    endnote怎么插入文献 Word添加引文步骤
    endnote怎么插入文献 Word添加引文步骤

    详解如何在 Word 中使用 EndNote 插件插入文献引用。涵盖从库中搜索记录、插入引文、选择样式到更新参考文献表的步骤,确保引文格式准确且可随时更新。

    再漫画官网首页入口及在线观看方法
    再漫画官网首页入口及在线观看方法

    了解如何进入再漫画官网首页,并通过界面导览熟悉分类浏览、搜索查找及在线阅读器的基本使用方法,提升阅读体验。

    Codex自动审查、缓存与额度重置有什么区别?
    Codex自动审查、缓存与额度重置有什么区别?

    针对Codex近期更新引发的讨论,本文厘清自动审查的功能边界,区分即时额度恢复与留存重置卡的不同,帮助用户理性评估更新价值,避免对缓存和权益产生误解。

    讯飞绘文ai AI写作功能介绍
    讯飞绘文ai AI写作功能介绍

    了解讯飞绘文AI写作功能:涵盖选题推荐、智能起稿、风格设定、知识融合及稿件校对。通过社区活动案例,掌握从构思到排版的完整操作逻辑,提升内容创作效率。

    讯飞绘文需要下载吗 网页版使用方式
    讯飞绘文需要下载吗 网页版使用方式

    想了解讯飞绘文是否必须安装软件?其实网页版即可满足日常文案创作需求。本文通过实际案例,一步步展示如何在浏览器中登录讯飞绘文、创建写作任务并保存结果,无需下载客户端也能高效工作。

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程
    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    Mac软件 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    Aperty macOS版
    Aperty macOS版
    macOS

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    WINDOWS 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    PixTV 网页版
    PixTV 网页版
    Windows

    PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。