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.confpowershell 启动
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