Cygwin工具编译Redis
Redis6.x版本是未编译版本(官方很调皮,所以没办法,咱只好帮他们编译一下了),所以咱们先下载一个Cygwin,用它来对Redis进行编译。
Cygwin下载地址:
https://cygwin.com/setup-x86_64.exe
下面是安装Cywin的一些注意事项说明:
1、前面可以自己默认或者自由选择,到达下图所示内容以后,添加阿里云镜像。不然可能会下载失败。
阿里云镜像地址:
http://mirrors.aliyun.com/cygwin/
2、到达下面页面时候,需要搜索并添加以下五个命令工具,因为下载的6.x版本的redis是未编译的代码,所以需要用这些工具提供的一些命令来编译Redis使用。命令工具包括:
make
gcc-core
gcc-g++
libgcc1
libgccpp1
添加方法如图所示:
添加完成以后,在下一步的预览页面,就可以看见我们添加的工具都包含在里面了:
然后会开始下载,如下图所示。
安装完成以后,运行Cygin,会在安装目录下的home文件夹下,生成一个当前用户名的文件夹:
现在,去到Redis官网下载Redis压缩包。当前我使用的最新的稳定版本是6.2.5(当前日期是2021-07-25)。下载地址是:
下载以后,把它丢到刚刚的Home目录下的用户名文件夹下:
在gywin界面上面查看,可以看见就这么个文件。
先解压。命令: tar -zxvf 你的redis文件夹压缩包:
解压以后,有兴趣的还可以进去解压文件夹下面瞅瞅,例如src下面,可以看见这家伙几乎一堆.h和.c的文件,说明这家伙太调皮了,写完代码都不编译,坏得很。.h和.c文件,是C语言的头部文件,以及C语言的代码文件,有兴趣的小伙伴也可以看源码学习学习,也许有什么新发现。
返回上级目录 xxx/redis-xxx,并且使用make命令。Duang,开始编译……
似乎预感到不对……时间一秒一秒过去,终于熬到了最后,what the fuck~~报错了:
算了,作为一个成年人,一条路走不通,咱走第二条路,换个Redis版本。可能是版本太新了,假装是它自己的问题,咱下个低一点的版本吧。这次换成了6.0.15:
以上的操作重新走一个,解压,cd到解压的目录下,以及make三连击:
Make~ 开始进入漫长的编译等待中……
直到最后,编译完成~~想必是我的真诚感动了这个版本的Redis,所以终于编译成功了:
在SRC目录下,会生成很多文件,咱们把生成的文件(除去.o文件、.d文件以及原本存在的.c和.h文件外,其他的都拷贝走),复制一份到自定义的某个地方,例如 C:/Redis :
把Cygwin/bin下面的 cygwin1.dll也拷贝到上面的文件夹下:
将Redis解压后的redis.conf配置文件,也拷贝过去。于是最终的文件包括以下这些:
启动Redis并测试
使用管理员权限打开CMD命令窗口,进入到redis下,直接运行 redis-server.exe
以上,代表redis运行成功了。现在做个简单测试,保持该窗口打开状态,继续打开一个新的cmd窗口,输入命令 redis-cli.exe -h 127.0.0.1 -p 6379
然后通过 set 和 get命令,检测结果。
现在打开Redis管理工具,看看是否可以连接上Redis:
由于没有设置密码,所以可以直接测试通过,并且可以看见上面咱们用命令设置的一个name的值:
修改redis密码
在redis.conf配置文件夹下,找到requirepass,去掉注释,并且设置自己的密码,例如我这边设置的密码是 wesky.123
默认情况下,redis配置文件里面只设置了本地访问权限,把 bind 127.0.0.1前面加个注释,即可实现远程访问。或者把127.0.0.1改为 0.0.0.0也是OK的。或者设置为多个ip,这样安全性高一点。我喜欢偷懒,就直接注释掉吧:
设置允许启用守护进程(后台运行的意思)。将daemonize设置为yes
将Redis配置为windows服务
添加上面redis的文件夹路径到环境变量的path里面:
先退出上面的redis。同时,退出以后,redis客户端就无法连接上了。所以为了将来不需要每次都手动启动redis,我们接下来把redis添加到Windows服务上。
以上版本经过一番折腾,目前无法部署到Windows服务上,所以顺手再降低了版本,用了5.0.10版本。放弃治疗了……如果其他大佬继续后续操作没有异常,那就是我姿势不对,欢迎指导。
使用管理员权限打开paoweshell(或者管理员权限打开cmd也是OK的),在redis目录下使用命令:
redis-server.exe --service-install redis.windows.conf(以自己具体的配置文件名称为准)
提示成功,转到Windows服务上面,进行启动redis服务:
Redis 6.x 看来暂时跟我无缘了,只能5.x暂时续一下命了。悲痛欲绝~~也可能姿势不对,欢迎大佬们提供建议。
现在验证下是不是可以用了。在客户端上面加一个key-value
在后端通过get命令获取:
尴尬,雷猴啊被解析成其他格式的了。
换个姿势验证下,设置一个新的key和value,并查看:
以上,bingo~~