当前位置: 首页 > 科技观察

实践中的编译-教你在Windows环境下运行Redis6.x_1

时间:2023-03-15 15:55:16 科技观察

大家好,我是闲来无事就乱来的九头蛇。不知道有没有和我一样平时使用windows操作系统进行开发的朋友。有时他们想安装一些软件,但他们只支持linux系统,但他们要么启动虚拟机,要么安装在云服务器上。前几天又是这样。我只是想使用Redis6.x版本来尝试新功能。打开官网一看,我是专家。不支持windows系统:不过redis官网虽然没有提供windows版本的下载,但这对我这个面向百度编程的小能手来说并不难。经过一番查找,在github上找到了微软维护的几个redis版本,可以在windows上运行:项目的git地址是https://github.com/MicrosoftArchive/redis/releases,翻了一下,微软维护了多个windowsredis2.x和3.x两个版本,可惜维护到官方版本3.0.504更新后就放弃了。但这不是什么大问题。眼看微软退出,热心的波兰公民TomaszPoradowski先生此时挺身而出,继续提供可以在windows上运行的redis4.x和5.x版本,并且从2017年到2022年,每一年都是5年.项目的git地址是https://github.com/tporadowski/redis/releases,是的,其实我本地环境运行的redis-5.0.9之前就是从这里下载的,绿色版真的很干净而且用起来卫生,所以强烈建议大家给这位老人一个Star支持一下。但是绕了这么大一圈,我的问题还是没有解决。由于没有现成的redis6.x版本可以在windows上运行,我们自己编译一个吧。初识Cygwin,首先介绍一下我们今天要用到的工具Cygwin。首先,我简单浏览了一下它的官网https://cygwin.com/。它清楚地解释了几个可能引起混淆的问题:首先解释了cygwin它是什么:Cygwin是GNU和开源工具的一个大集合,提供类似于在Windows上运行Linux发行版的模拟环境功能。cygwin是一个动态链接库cygwin1.dll,它提供了大量的POSIXAPI函数。然后纠正大家的一个普遍误解:cygwin不能让原生的linux应用程序运行在windows上。如果你想让它在Windows上运行,那么你必须从源代码重建你的应用程序。Cygwin并没有神奇地让原生Windows应用程序意识到信号、伪终端等unix特性。事实上,它的功能可以用一句话来概括。Cygwin是一个兼容POSIX的环境,可以运行在原生的windows系统上。它可以通过重新编译将linux应用程序移植到windows。好了,这个对cygwin的功能的简单了解对于我们暂时来说已经足够了,下面就来看看如何使用它来编译windows版的redis吧。Cygwin安装接下来我们首先下载并安装编译工具Cygwin,可以直接在其官网下载,完成后即可开始安装。下面我将发布一些需要特殊配置的步骤。如果没有特别说明,直接点击下一步即可。网络连接配置,这里选择第二项,即直连,不使用任何代理方式:在选择下载源的步骤中,先手动输入UserURL,添加阿里云的镜像http://mirrors.aliyun.com/cygwin,点击添加,然后选择我们刚刚添加的源,然后点击下一步:下一步,选择需要下载安装的组件包。我们只需要下载我们编译好的相关模块即可。首先通过上面的搜索框定位,选择Devel模块下的make、gcc-core、gcc-g++,以及Libs模块下的libgcc1、libgccpp1,然后在New一栏点击Skip,选择要安装的版本号,全部之后添加完成,点击Next:Next,会自动下载上面选择的模块,全部下载完成后安装完成:安装完成后,我们运行Cygwin64Terminal,可以看到Status为通过命令检测OK,说明cygwin运行正常:编译redis源码,准备好编译工具后,我们先下载redis6的源码。.tar.gz.cygwin安装完成后,会在其安装路径的home目录下创建一个以你登录系统的用户名命名的目录。我们把下载后的压缩包放到这个cygwin64\home\${user}目录下,先在cygwin命令行执行解压命令:tar-xvfredis-6.0.16.tar.gz使用如下命令切换到解压后根目录,然后执行编译安装:cdredis-6.0。16make&&makeinstall回车,然后开始漫长的等待。不得不说编译安装的过程真的很慢。我花了大约20分钟才完成这一切。不出所料,最后出了点意外,报了两个Error,不过好像影响不大。切换到src目录,编译完成后已经可以看到生成了6个exe可执行文件:但是此时如果双击redis-server.exe尝试启动,会报错说明缺少dll动态链接库:我们可以在cygwin的bin目录下找到这个文件。为了方便,将可执行文件、动态链接库文件、redis配置文件复制到单独的目录下,再次尝试启动:这次可以正常启动,我们使用客户端连接工具进行连接测试。终于可以在windows环境下正常运行redis6.0.16版本了。终于,一顿大餐终于圆满成功,终于可以在windows上体验redis6.x版本了,不过这里提醒小伙伴们,学习中可以体验一下这样编译的redis。尽量不要在生产中使用它。因为cygwin编译出来的程序相当于在windows系统上模拟了POSIX兼容层的实现,应用程序在底层多了一层函数调用,所以效率远低于运行在windows系统上的原生应用程序linux系统。所以,这样运行在windows上的redis,无疑会失去其引以为豪的高性能优势。