redis出现的问题:
(该问题在写此文章之前已经解决,现进行问题复现)
背景:
- 问题出现在阿里云的服务器上,系统使用的是centos的公版的7.9的64版本
- redis正常安装并且可以在后台正常启动,通过redis-cli命令可以正常连接使用(但无法自启动)
问题:
redis可以正常启动,但是状态显示启动失败
在redis的安装目录执行该命令:
./redis-server
在查看redis进程:(发现是有redis进程的如下截图):
ps -ef |grep redis
但是通过查看redis状态是失败的(active状态是:fail;不是未启动的:inactive):
-
systemctl status redis
使用下面关于redis的命令不会报错:
# 开机自动启动
systemctl enable redis.service
# 启动redis服务
systemctl start redis.service
# 查看服务状态
systemctl status redis.service
但是最后发现好像没有用(自启动和启动命令用了启动不了redis,在进程中是看不到redis启动的进程的,自启动是无用的)。
redis自带的连接工具redis-cli在通过安装的目录(./redis-server)启动后还可以连接使用
解决方式:
- 查看redis的日志,看能否找出问题(当时我查看了好几遍日志文件,没有什么错误提示,只有一些配置警告提示,但可以明显发现日志记录的启动次数比我通过ps命令看到的redis启动的次数少);
- 认真看一下自己的/lib/systemd/system/redis.service 下的文件,多改改(我自己感觉偶尔这个配置重新加载了也没改变,没有实际理由的自我想
我的步骤:
- 通过下面命令取消redis的开机自启动:
systemctl disabled redis.service
- 在修改系统下面的redis.service 文件
- 确保前两项无误后再执行开机自启动命令
systemctl enable redis.service
注意:取消开机自启动之前一定要确保redis进程是没有启动的,可以通过下面命令杀掉redis的进程:
kill -9 redis的pid
再去执行取消开机自启动,之后再去修改redis.service 文件,一定要记得重载系统服务:
systemctl daemon-reload
上面两步可以多执行几次,确保系统结束了第一次设置的redis开机自启。
问题分析(个人观点推测):
出现该问题,可能redis的安装没有太大问题,但是一些细节没有注意到。redis在安装目录可以正常启动说明redis.conf配置文件等是正常的,主要问题出现在redis.service的系统文件。在编写redis.service的系统文件是应该提前把redis停掉(本人当时在编写好redis.service系统文件并重载该文件之前就没杀掉redis的后台进程)。导致后面systemctl关于redis的命令执行不出错,但是没有正常完成执行效果。