Windows 下编译 Redis
Windows 下编译 Redis
先说一下最后的结果——失败!
Windows
出于某种 emotional 原因,执意有要在 windows 下编译使用 redis。后来发现对于我来说似乎不太现实。
当使用 windows 下的 make 开始编译 redis 源码时,它抛出的异常是 pkg-config
无法被识别成命令,google 了一下这个:
pkg-config 是一个在源代码编译时查询已安装的库的使用接口的计算机工具软件。pkg-config原本是设计用于Linux的,但现在在各个版本的BSD、windows、Mac OS X和Solaris上都有着可用的版本。
它输出已安装的库的相关信息,包括:
WSL
即便是有了 windows 的可用版本,估计到时候实际编译起来肯定有一大堆错误,不现实!这样的话就先拿我的 WSL 试一下。
进入 WSL 控制台执行 make,发现没有安装,按照指示安装就可以了。
安装完后再编译,大约几分钟就编译好了,然后按照官方的说明,先启动 redis-server,在运行 redis-cli,perfect!
附上一些基本说明:
# 自下载安装
$ wget https://download.redis.io/releases/redis-6.2.5.tar.gz
$ tar xzf redis-6.2.5.tar.gz
$ cd redis-6.2.5
$ make
$ src/redis-server
$ src/redis-cli
redis> set foo bar
OK
redis> get foo
"bar"
# 使用 ppa 安装
$ sudo add-apt-repository ppa:redislabs/redis
$ sudo apt-get update
$ sudo apt-get install redis
所以现在我能够在 WSL 下使用 redis 了,但这并不是最终目标!我的目标是生成 exe 的可执行文件!
msys2
在经过一番高强度冲浪之后,我找到了一个似乎可行的解决方案,这里是原文:https://last2win.com/2020/11/07/windows-install-redis/
当中也提到了使用 WSL,但博主似乎不是那么热衷于 WSL,希望使用一种更加轻量的方式来解决 redis 编译问题,于是就有了现在要尝试的 msys2。
先看看 msys2 是什么:
MSYS2 (Minimal SYStem 2) 是一个MSYS的独立改写版本,主要用于 shell 命令行开发环境。同时它也是一个在Cygwin (POSIX 兼容性层) 和 MinGW-w64(从"MinGW-生成")基础上产生的,追求更好的互操作性的 Windows 软件。
说实话,有点看不太懂(毕竟上学时因为各种机缘巧合没有修习计组,后来自己补也寥寥草草,不系统),那就先试试。
先去官网 download 一下:https://www.msys2.org/
然后是傻瓜式安装(会在 66% 那里卡很久,正常现象),安装完之后打开,可以看到它是命令行的界面,这很 Unix!
第一步,挂代理(按照自己的来)或者换源,不挂的话也行,可能会很慢,甚至导致失败:
export http_proxy='http://127.0.0.1:7890'
export https_proxy=$http_proxy
export HTTP_PROXY=$http_proxy
export HTTPS_PROXY=$http_proxy
export ftp_proxy=$http_proxy
export rsync_proxy=$http_proxy
第二步,刷新软件包数据,安装编译工具:
pacman -Sy
pacman -S make gcc pkg-config
第三步,按照 redis 官方的提示下载编译 redis:
$ cd ~
$ wget https://download.redis.io/releases/redis-6.2.5.tar.gz
$ tar xzf redis-6.2.5.tar.gz
$ cd redis-6.2.5
$ make
不出所料,编译失败:
看到别人博文里的使用的是 6.0.15 版本,于是降个版本试试:
编译成功!于是我兴奋的切到 windows 下的终端去运行 redis-server 和 redis-cli,发现一点反应也没有:
GUI 点击运行程序:
又跑去下了这个 dll,还是不行!万念俱灰的时候,我回到了 msys2 的控制台,用它来试试:
好家伙,自己编一的还是自己能用是吧,再开一个终端测试一下:
没问题,拿我的 WSL 试一下呢?在这里直接用 WSL 使用 redis-cli,显示是不能够的,因为这是一个 exe 文件:
总结
我有 WSL,为什么要折腾着用 msys2 呢?!!而且在我这边看起来,两者最终的效果似乎是一样的……那我干嘛不用集成到 terminal 里面的 WSl呢!??
如果真的想在 Windows 下使用 redis,推荐去使用人家已经编译打包好的成品,不过版本可能会有些低,这里分享一个:https://github.com/tporadowski/redis/releases ,最新版本是 5.0.10。
最后,redis 真正在 windows 下使用的情况微乎其微,除非你自己写东西玩儿,但是你自己写着玩儿的东西估计也用不上 redis,所以最好是买台服务器,远程部署安装使用,毕竟 redis 在网络支持这一块儿拿捏得还是死死的!