Redis官方为什么不供给Windows版本?

刚刚阅读1回复0
kewenda
kewenda
  • 管理员
  • 注册排名1
  • 经验值176135
  • 级别管理员
  • 主题35227
  • 回复0
楼主

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 文件格局的LiveCD

源码阅读顺利完成后,加拆 正式版的 MSYS2 ,那是两个校对辅助东西,能用做在 Windows 下校对 Linux 中的许多应用软件,此次他们就接纳他来将 Redis 的源码校对为 Windows 版

https://www.msys2.org 那个是官方网站门商标,能从那儿阅读

MSYS2 的加拆操做体例过程就不停止了,阅读 exe 后间接点选下一步棋,下一步棋的操做体例就能了,没什么需要把稳的。

MSYS2 加拆后,从图标找出MSYS2 MSYS 起头运转,步入 MSYS2 后次要就就倚赖设置装备摆设文件的操做体例了。操做体例过程中会盘问与否继续,优先选择 Y

#预览 MSYS2 控造系统

pacman -Syu

# 加拆 gcc make pkg-config

pacman -Sy gcc make pkg-config

# 转换到校对的产物目次(MSYS2 /d 是 D盘;/e 是 E盘) 我那儿事先在 D盘成立了两个 redis 空设置装备摆设文件用做此次的校对操做体例

cd /d/redis

将阅读好的 源码LiveCD黏合到相联系关系的校对产物目次,他们那儿是 d:/redis/

# Cogl redis 源码

tar -xvf redis-7.0.4.tar.gz

# 步入源码产物目次

cd redis-7.0.4

然后需要到 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 文件即可

需要对那段代码正文掉 第49行和61行,如下图

正文后保留退出即可,然后从头回到他们的 MSYS2 末端控造台起头停止校对 Redis

# 校对

make PREFIX=/d/redis/dist install

操做体例过程中会有许多警告之类的信息能间接忽略,只要能胜利校对即可。

校对胜利后,在电脑的 d:\redis\dist\bin 设置装备摆设文件就能看到校对后的 windows 版 exe 文件

校对顺利完成后还需要复造如下三份文件

msys-2.0.dll 位于 c:\msys64\usr\bin

redis.conf 位于 redis源码设置装备摆设文件,d:\redis\redis-7.0.4

sentinel.conf 位于 redis 源码设置装备摆设文件,d:\redis\redis-7.0.4

复造以上三叠文件到他们的 d:\redis\dist\bin 设置装备摆设文件

他们的 d:\redis\dist\bin 设置装备摆设文件总共应该有那些文件。

需要留意因为 MSYS2 的规定,他们的应用软件必需至少要放置在 2层产物目次设置装备摆设文件内,才气一般运转,好比 d:/redis/dist/bin/ 能,d:/redis/ 则不克不及。

RedisServer 能通过如下两种体例启动

cmd 启动

d: cd d:\redis\dist\bin redis-server.exe redis.conf

powershell 启动

d: cd d:\redis\dist\bin ./redis-server.exe redis.conf

当启动后呈现上面的界面就申明他们的 redis-server 正式校对发布胜利了,能用本身习惯的 redis 毗连辅助东西去测验考试毗连 127.0.0.1:6379 ,我对小我习惯接纳 Another Redis Desktop Manager,毗连后能看到如下面的形态信息

从形态如看出来是 7.0.4 的版,至此 关于操纵 Redis源码校对发布 Windows版的 Reidis 的操做体例就顺利完成了,下面如是说若何连系 .NET 来合做开发两个 Windows 办事项目,为他们校对的那个 redis-server.exe 实现 windows 办事项目标加拆运转形式。不然每次接纳都要去手动启动 redis-server.exe 较为繁琐。

详细来说操纵 VisualStudio 成立两个 .NET 6 的控造台法式,然后在Nuget 加拆 Microsoft.Windows.Compatibility 组件

整个工程项目标代码不多,次要就是 Program.cs 代码内容如下:

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(); } } } }

发布的时候保举如下设置:接纳独立形式,启用预校对发布为单个文件

发布后得到如下文件

将发布后的文件拷贝到 d:\redis\dist\bin 设置装备摆设文件和他们起头发布的 Redis 文件放到同两个产物目次

如许他们整个 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

0
回帖 返回旅游

Redis官方为什么不供给Windows版本? 期待您的回复!

取消
载入表情清单……
载入颜色清单……
插入网络图片

取消确定

图片上传中
编辑器信息
提示信息