Loading

Windows 下编译 Redis

Windows 下编译 Redis

先说一下最后的结果——失败!


Windows

出于某种 emotional 原因,执意有要在 windows 下编译使用 redis。后来发现对于我来说似乎不太现实。

当使用 windows 下的 make 开始编译 redis 源码时,它抛出的异常是 pkg-config无法被识别成命令,google 了一下这个:


pkg-config 是一个在源代码编译时查询已安装的的使用接口的计算机工具软件。pkg-config原本是设计用于Linux的,但现在在各个版本的BSDwindowsMac OS XSolaris上都有着可用的版本。

它输出已安装的库的相关信息,包括:


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/

image-20210925095616469

然后是傻瓜式安装(会在 66% 那里卡很久,正常现象),安装完之后打开,可以看到它是命令行的界面,这很 Unix!

image-20210925100118678


第一步,挂代理(按照自己的来)或者换源,不挂的话也行,可能会很慢,甚至导致失败:

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

不出所料,编译失败:

image-20210925100755451


看到别人博文里的使用的是 6.0.15 版本,于是降个版本试试:

image-20210925101017384


编译成功!于是我兴奋的切到 windows 下的终端去运行 redis-server 和 redis-cli,发现一点反应也没有:

image-20210925101056861


GUI 点击运行程序:

image-20210925101134674


又跑去下了这个 dll,还是不行!万念俱灰的时候,我回到了 msys2 的控制台,用它来试试:

image-20210925101407268


好家伙,自己编一的还是自己能用是吧,再开一个终端测试一下:

image-20210925101526716


没问题,拿我的 WSL 试一下呢?在这里直接用 WSL 使用 redis-cli,显示是不能够的,因为这是一个 exe 文件:

image-20210925101820570


总结

我有 WSL,为什么要折腾着用 msys2 呢?!!而且在我这边看起来,两者最终的效果似乎是一样的……那我干嘛不用集成到 terminal 里面的 WSl呢!??

如果真的想在 Windows 下使用 redis,推荐去使用人家已经编译打包好的成品,不过版本可能会有些低,这里分享一个:https://github.com/tporadowski/redis/releases ,最新版本是 5.0.10。

最后,redis 真正在 windows 下使用的情况微乎其微,除非你自己写东西玩儿,但是你自己写着玩儿的东西估计也用不上 redis,所以最好是买台服务器,远程部署安装使用,毕竟 redis 在网络支持这一块儿拿捏得还是死死的!

posted @ 2021-09-25 10:27  槐下  阅读(792)  评论(1编辑  收藏  举报