一、总结
本文尝试了redis-7.2.1、redis-7.2、redis-7.0.12、redis-6.2.13,其中redis-7.0.12、redis-6.2.13下载下来后,没有修改redis项目的任何代码,直接在解压后的根目录下执行make命令就可以成功,
结果总结如下:
redis-7.2.0、redis-7.2.1版本,可成功编译,但编译生成的可执行文件中,redis-server.exe 执行时报错不可用;
redis-7.0.12版本,可成功编译,且redis-cli、redis-server均可正常使用;
redis-6.2.13版本,可成功编译,且redis-cli、redis-server均可正常使用;
可通过git仓库下载不同的redis版本,git地址:https://github.com/redis
二、编译redis
- 访问redis官网下载源码:https://redis.io/download/,git地址:https://github.com/redis
 - 找到Cygwin安装目录下的usr\include\dlfcn.h文件,修改如下代码,将#if __GNU_VISIBLE、#endif 这两行注释掉。(使用// 或 /* 被注释代码*/ 方式进行注释)
 
- 打开Cygwin图形界面,并输入pwd查看路径,并把redis源码拷贝到Cygwin安装路径下的该路径下
 
- 解压Redis源码:tar -zxvf redis-7.0.12.tar.gz
 - 进入解压redis后的源码目录:cd redis-7.0.12
 - 编译redis源码,进入目录后运行:make
 - 如图所示,编译成功
 
- 将编译后的可执行文件及依赖放到同一个文件夹
 
三、编译redis7.2.1、redis7.2.0时遇到的问题解决
- 报错error: array subscript has type ‘char’ [-Werror=char-subscripts],解决方案
 
- 方案一:修改deps>hiredis的Makefile,找到以下代码删除-Werror
 
WARNINGS=-Wall -Wextra -Werror -Wstrict-prototypes -Wwrite-strings -Wno-missing-field-initializers- 方案二:修改deps>hiredis>sds.c文件,找到889行(报错的那行sds.c:889:25: error: array subscript has type ‘char’ [-Werror=char-subscripts])
 
        default:
            if (isprint((int)*p))
                s = hi_sdscatprintf(s,"%c",*p);
            else
                s = hi_sdscatprintf(s,"\\x%02x",(unsigned char)*p);
            break;
        }
- 报错Makefile:redis-server
 
- 进入cd deps 目录
 - 对deps下报错的子项目,进行单独编译,如果没有再报错,再继续往下进行,make hiredis lua hdr_histogram fpconv jemalloc linenoise
 
- 运行:cd ../ && make,无报错则编译成功
 
四、windows配置redis
- 安装nssm,用来创建redis服务
 
- 访问官网下载nssm:https://nssm.cc/
 
- 把下载好的压缩包解压到任意位置
 - 配置nssm的环境变量,环境变量路径为nssm解压后的路径
 
- 配置Redis环境变量
 
- 系统变量新建Redis_HOME变量,值为编译后可执行文件及依赖文件夹的路径
 - 系统变量编辑path新建%Redis_HOME%
 - 运行redis-cli -v,运行成功则正常
 
- 管理员启动命令行工具,运行nssm install,按照下图选择编译后的可执行文件及依赖的文件夹位置,点击install service
 
- 启动服务:管理员权限打开命令行工具运行 nssm start Redis,启动服务后运行redis-cli,redis连接成功,如果不启动服务会连接失败(图中红色标记)
 
- 其他命令
 
- 暂停服务:nssm stop Redis
 - 重新启动服务:nssm restart Redis
 - 删除服务:nssm remoce Redis 或 sc delete Redis,删除服务前,先暂停服务
 
五、不使用cygwin编译redis,并在windows系统下配置Redis
- 下载redis:https://github.com/tporadowski/redis/releases 或 https://github.com/redis-windows/redis-windows,下载zip
 - 配置环境变量
 
- 系统变量新建Redis_HOME变量,值为解压路径
 - 系统变量编辑path新建%Redis_HOME%
 - 运行redis-cli -v,运行成功则正常
 
- 安装服务:打开命令行工具运行 redis-server --service-install D:\redis\redis.windows.conf
 - 启动服务:打开命令行工具运行 redis-server --service-start
 - 测试redis是否开启,分别运行以下命令
 
redis-cli set name redis#设置name的值为hello get name #获取name值 keys * #匹配当前数据库中所有的key
- redis默认只允许本地访问,要使Redis可以远程访问,需修改redis对应的配置文件,开启远程访问,修改 redis.windows.conf
 - redis命令
 
卸载服务:redis-server --service-uninstall
开启服务:redis-server --service-start
停止服务:redis-server --service-stop六、redis可视化工具下载
- 可视化工具下载链接一:https://github.com/uglide/RedisDesktopManager/releases/tag/0.9.3
 - 可视化工具下载链接二:https://redis.io/download/
 - 可视化工具下载链接三:https://redis.com/redis-enterprise/redis-insight/
 

本文暂时没有评论,来添加一个吧(●'◡'●)