Redis停止服务时报错Waiting for Redis to shutdown …解决方法

Redis安装配置完成后,启动过程非常简单,执行命令/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf即可(在Linux里一般执行 ./redis-server ../redis.conf)。停止Redis的最简单的方法是在启动实例的session中,直接使用Control-C命令。当然还可以通过客户端来停止服务,如可以用shutdown来停止Redis实例,具体命令为src/redis-cli shutdown。

Redis的三种启动方式 
一、 直接启动

启动操作

1 #加上`&`号使redis以后台程序方式运行
2 ./redis-server &

检测操作

1、#检测后台进程是否存在
ps -ef |grep redis

2、#检测6379端口是否在监听
netstat -lntp | grep 6379

3、#使用`redis-cli`客户端检测连接是否正常
./redis-cli -h 127.0.0.1 -p 6379 -a 123456
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> set key "hello world"
OK
127.0.0.1:6379> get key
"hello world"

停止操作

1.#使用客户端
redis-cli shutdown
2.#因为Redis可以妥善处理SIGTERM信号,所以直接kill -9也是可以的
kill -9 PID


二、通过指定配置文件启动

配置文件

可为Redis服务启动指定配置文件,配置文件 redis.conf在Redis根目录下。

1、#修改daemonize为yes,即默认以后台程序方式运行(还记得前面手动使用&号强制后台运行吗)。
daemonize no

2、#可修改默认监听端口
port 6379

3、#修改生成默认日志文件位置
logfile "/home/futeng/logs/redis.log"

4、#配置持久化文件存放位置
dir /home/futeng/data/redisData

启动时指定配置文件

redis-server ./redis.conf
redis-cli -p 6380
其他启停同 直接启动 方式。配置文件是非常重要的配置工具,随着使用的逐渐深入将显得尤为重要,推荐在一开始就使用配置文件。 
III. 使用Redis启动脚本设置开机自启动

启动脚本
推荐在生产环境中使用启动脚本方式启动redis服务,启动脚本redis_init_script
位于位于Redis的 /utils/ 目录下。

1、#大致浏览下该启动脚本,发现redis习惯性用监听的端口名作为配置文件等命名,我们后面也遵循这个约定。
2、#redis服务器监听的端口
REDISPORT=6379
3、#服务端所处位置,在make install后默认存放与`/usr/local/bin/redis-server`,如果未make install则需要修改该路径,下同。
EXEC=/usr/local/bin/redis-server
4、#客户端位置
CLIEXEC=/usr/local/bin/redis-cli
5、#Redis的PID文件位置
PIDFILE=/var/run/redis_${REDISPORT}.pid
6、#配置文件位置,需要修改
CONF="/etc/redis/${REDISPORT}.conf"

配置环境
根据启动脚本要求,将修改好的配置文件以端口为名复制一份到指定目录,需使用root用户。
mkdir /etc/redis
cp redis.conf /etc/redis/6379.conf
2 将启动脚本复制到/etc/init.d目录下,本例将启动脚本命名为redisd(通常都以d结尾表示是后台自启动服务)。
p redis_init_script /etc/init.d/redisd

设置为开机自启动
此处直接配置开启自启动 chkconfig redisd on 
将报错误: service redisd does not support chkconfig 
参照 此篇文章 ,在启动脚本开头添加如下两行注释以修改其运行级别:

#!/bin/sh
# chkconfig:   2345 90 10
# description:  Redis is a persistent key-value database
#

再设置即可成功

redis基本操作

#设置为开机自启动服务器
chkconfig redisd on
#启动服务
service redisd start
#关闭服务
service redisd stop

如果配置了安全认证停止redisd服务时报 
service redis stop 
Stopping … 
OK 
(error) NOAUTH Authentication required. 
Waiting for Redis to shutdown … 
Waiting for Redis to shutdown … 
Waiting for Redis to shutdown … 
Waiting for Redis to shutdown … 
Waiting for Redis to shutdown … 
Waiting for Redis to shutdown … 
Waiting for Redis to shutdown … 
Waiting for Redis to shutdown … 

### Redis 的启动命令及相关说明 Redis 提供了多种启动方式,适用于不同的操作系统和应用场景。以下是常见的几种 Redis 启动方法。 #### 1. **直接启动 Redis** 最简单的启动方式是通过 `redis-server` 命令直接运行,默认会加载默认配置并监听本地的 6379 端口。 ```bash redis-server ``` 如果需要指定自定义配置文件,则可以通过以下命令实现: ```bash redis-server /path/to/redis.conf ``` 这种方式允许用户根据需求调整各种参数,例如绑定 IP 地址、端口号等[^1]。 #### 2. **作为服务启动(Linux 系统)** 在现代 Linux 发行版中,通常建议将 Redis 设置为系统服务以便于管理。这可以通过 systemd 或 init 脚本来完成。 ##### 使用 systemd 控制 Redis 服务 确保 `/etc/systemd/system/redis.service` 文件存在,并包含正确的配置项后,可以使用以下命令启动 Redis: ```bash sudo systemctl start redis ``` 同样地,也可以通过以下命令检查状态或停止服务: ```bash sudo systemctl status redis sudo systemctl stop redis ``` ##### 自定义 Init 脚本启动 对于一些老旧系统或者特定需求场景,可以编写自定义的 init 脚本来控制 Redis 的生命周期。例如,下面是一个典型的 init 脚本片段: ```sh #!/bin/sh # chkconfig: 2345 90 10 # description: Redis is a persistent key-value database PATH=/usr/local/bin:/sbin:/usr/sbin:/bin:/usr/bin REDISPORT=6379 EXEC=/usr/local/bin/redis-server CLIEXEC=/usr/local/bin/redis-cli PIDFILE=/var/run/redis_${REDISPORT}.pid CONF="/etc/redis/${REDISPORT}.conf" case "$1" in start) if [ -f $PIDFILE ]; then echo "$PIDFILE exists, process is already running or crashed" else echo "Starting Redis server..." $EXEC $CONF fi ;; stop) if [ ! -f $PIDFILE ]; then echo "$PIDFILE does not exist, process is not running" else PID=$(cat $PIDFILE) echo "Stopping ..." $CLIEXEC -p $REDISPORT SHUTDOWN while [ -e ${PIDFILE} ]; do echo "Waiting for Redis to shutdown ..." sleep 1 done echo "Redis stopped" fi ;; restart|force-reload) $0 stop $0 start ;; *) echo "Usage: /etc/init.d/redis {start|stop|restart|force-reload}" exit 1 esac ``` 保存脚本至 `/etc/init.d/redis` 并赋予可执行权限后,即可按照常规方式进行操作[^4]。 #### 3. **Docker 容器中的 Redis 启动** 随着容器化技术的发展,越来越多的人倾向于使用 Docker 来部署 Redis。这种方法不仅简单快捷,而且便于迁移和扩展。 首先拉取官方镜像: ```dockerfile docker pull redis ``` 然后创建并启动一个新容器: ```dockerfile docker run --name some-redis -d -p 6379:6379 redis ``` 这样就可以通过宿主机访问到正在运行的 Redis 实例了。 --- ### 注意事项 当遇到诸如 `-bash: redis-server: command not found` 类型的错误,可能是由于环境变量未正确设置或是安装路径有问题所致。此应当验证 `redis-server` 是否存在于 `$PATH` 中,必要将其添加进去[^2]。 此外,在生产环境中务必遵循最佳实践,合理配置防火墙规则、身份认证机制以及其他安全性措施以保护数据免遭未经授权的访问。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值