cygwin编译redis、nssm配置redis服务

2023-11-08 09:36

本文主要是介绍cygwin编译redis、nssm配置redis服务,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、总结

本文尝试了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
  1. 访问redis官网下载源码:https://redis.io/download/,git地址:https://github.com/redis
  2. 找到Cygwin安装目录下的usr\include\dlfcn.h文件,修改如下代码,将#if __GNU_VISIBLE、#endif 这两行注释掉。(使用// 或 /* 被注释代码*/ 方式进行注释)
    在这里插入图片描述
    在这里插入图片描述
  3. 打开Cygwin图形界面,并输入pwd查看路径,并把redis源码拷贝到Cygwin安装路径下的该路径下
    在这里插入图片描述
  4. 解压Redis源码:tar -zxvf redis-7.0.12.tar.gz
  5. 进入解压redis后的源码目录:cd redis-7.0.12
  6. 编译redis源码,进入目录后运行:make
  7. 如图所示,编译成功
    在这里插入图片描述
  8. 将编译后的可执行文件及依赖放到同一个文件夹
    在这里插入图片描述
三、编译redis7.2.1、redis7.2.0时遇到的问题解决
  1. 报错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])
    将if (isprint(*p))改为if (isprint((int)*p)),做一个强制转换。
            default:if (isprint((int)*p))s = hi_sdscatprintf(s,"%c",*p);elses = hi_sdscatprintf(s,"\\x%02x",(unsigned char)*p);break;}
  1. 报错Makefile:redis-server
    在这里插入图片描述
  • 进入cd deps 目录
  • 对deps下报错的子项目,进行单独编译,如果没有再报错,再继续往下进行,make hiredis lua hdr_histogram fpconv jemalloc linenoise
  1. 运行:cd …/ && make,无报错则编译成功
四、windows配置redis

1.安装nssm,用来创建redis服务

  • 访问官网下载nssm:https://nssm.cc/
    在这里插入图片描述
  • 把下载好的压缩包解压到任意位置
  • 配置nssm的环境变量,环境变量路径为nssm解压后的路径
    在这里插入图片描述
    在这里插入图片描述
  1. 配置Redis环境变量
  • 系统变量新建Redis_HOME变量,值为编译后可执行文件及依赖文件夹的路径
  • 系统变量编辑path新建%Redis_HOME%
  • 运行redis-cli -v,运行成功则正常
  1. 管理员启动命令行工具,运行nssm install,按照下图选择编译后的可执行文件及依赖的文件夹位置,点击install service
    在这里插入图片描述
  2. 启动服务:管理员权限打开命令行工具运行 nssm start Redis,启动服务后运行redis-cli,redis连接成功,如果不启动服务会连接失败(图中红色标记)
    在这里插入图片描述
  3. 其他命令
  • 暂停服务:nssm stop Redis
  • 重新启动服务:nssm restart Redis
  • 删除服务:nssm remoce Redis 或 sc delete Redis,删除服务前,先暂停服务
五、不使用cygwin编译redis,并在windows系统下配置Redis

1.下载redis:https://github.com/tporadowski/redis/releases 或 https://github.com/redis-windows/redis-windows,下载zip
2.配置环境变量

  • 系统变量新建Redis_HOME变量,值为解压路径
  • 系统变量编辑path新建%Redis_HOME%
  • 运行redis-cli -v,运行成功则正常
  1. 安装服务:打开命令行工具运行 redis-server --service-install D:\redis\redis.windows.conf
  2. 启动服务:打开命令行工具运行 redis-server --service-start
  3. 测试redis是否开启,分别运行以下命令
    redis-cli
    set name redis#设置name的值为hello
    get name #获取name值
    keys * #匹配当前数据库中所有的key
    
  4. redis默认只允许本地访问,要使Redis可以远程访问,需修改redis对应的配置文件,开启远程访问,修改 redis.windows.conf
  5. redis命令
    卸载服务:redis-server --service-uninstall
    开启服务:redis-server --service-start
    停止服务:redis-server --service-stop
    
六、redis可视化工具下载
  1. 可视化工具下载链接一:https://github.com/uglide/RedisDesktopManager/releases/tag/0.9.3
  2. 可视化工具下载链接二:https://redis.io/download/
  3. 可视化工具下载链接三:https://redis.com/redis-enterprise/redis-insight/

这篇关于cygwin编译redis、nssm配置redis服务的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/369033

相关文章

详谈redis跟数据库的数据同步问题

《详谈redis跟数据库的数据同步问题》文章讨论了在Redis和数据库数据一致性问题上的解决方案,主要比较了先更新Redis缓存再更新数据库和先更新数据库再更新Redis缓存两种方案,文章指出,删除R... 目录一、Redis 数据库数据一致性的解决方案1.1、更新Redis缓存、删除Redis缓存的区别二

Redis与缓存解读

《Redis与缓存解读》文章介绍了Redis作为缓存层的优势和缺点,并分析了六种缓存更新策略,包括超时剔除、先删缓存再更新数据库、旁路缓存、先更新数据库再删缓存、先更新数据库再更新缓存、读写穿透和异步... 目录缓存缓存优缺点缓存更新策略超时剔除先删缓存再更新数据库旁路缓存(先更新数据库,再删缓存)先更新数

Redis事务与数据持久化方式

《Redis事务与数据持久化方式》该文档主要介绍了Redis事务和持久化机制,事务通过将多个命令打包执行,而持久化则通过快照(RDB)和追加式文件(AOF)两种方式将内存数据保存到磁盘,以防止数据丢失... 目录一、Redis 事务1.1 事务本质1.2 数据库事务与redis事务1.2.1 数据库事务1.

mac安装redis全过程

《mac安装redis全过程》文章内容主要介绍了如何从官网下载指定版本的Redis,以及如何在自定义目录下安装和启动Redis,还提到了如何修改Redis的密码和配置文件,以及使用RedisInsig... 目录MAC安装Redis安装启动redis 配置redis 常用命令总结mac安装redis官网下

最新版IDEA配置 Tomcat的详细过程

《最新版IDEA配置Tomcat的详细过程》本文介绍如何在IDEA中配置Tomcat服务器,并创建Web项目,首先检查Tomcat是否安装完成,然后在IDEA中创建Web项目并添加Web结构,接着,... 目录配置tomcat第一步,先给项目添加Web结构查看端口号配置tomcat    先检查自己的to

Redis主从复制实现原理分析

《Redis主从复制实现原理分析》Redis主从复制通过Sync和CommandPropagate阶段实现数据同步,2.8版本后引入Psync指令,根据复制偏移量进行全量或部分同步,优化了数据传输效率... 目录Redis主DodMIK从复制实现原理实现原理Psync: 2.8版本后总结Redis主从复制实

SpringBoot使用注解集成Redis缓存的示例代码

《SpringBoot使用注解集成Redis缓存的示例代码》:本文主要介绍在SpringBoot中使用注解集成Redis缓存的步骤,包括添加依赖、创建相关配置类、需要缓存数据的类(Tes... 目录一、创建 Caching 配置类二、创建需要缓存数据的类三、测试方法Spring Boot 熟悉后,集成一个外

Redis分布式锁使用及说明

《Redis分布式锁使用及说明》本文总结了Redis和Zookeeper在高可用性和高一致性场景下的应用,并详细介绍了Redis的分布式锁实现方式,包括使用Lua脚本和续期机制,最后,提到了RedLo... 目录Redis分布式锁加锁方式怎么会解错锁?举个小案例吧解锁方式续期总结Redis分布式锁如果追求

Redis的Hash类型及相关命令小结

《Redis的Hash类型及相关命令小结》edisHash是一种数据结构,用于存储字段和值的映射关系,本文就来介绍一下Redis的Hash类型及相关命令小结,具有一定的参考价值,感兴趣的可以了解一下... 目录HSETHGETHEXISTSHDELHKEYSHVALSHGETALLHMGETHLENHSET

Servlet中配置和使用过滤器的步骤记录

《Servlet中配置和使用过滤器的步骤记录》:本文主要介绍在Servlet中配置和使用过滤器的方法,包括创建过滤器类、配置过滤器以及在Web应用中使用过滤器等步骤,文中通过代码介绍的非常详细,需... 目录创建过滤器类配置过滤器使用过滤器总结在Servlet中配置和使用过滤器主要包括创建过滤器类、配置过滤