Redis 不会关闭

Redis 不会关闭

大部分情况下,当我重启 Ubunutu 服务器时,都会反复出现“正在等待 Redis 关闭…”的提示,除非我强制重启,否则它不会停止。这是什么原因造成的?

我有http://godrb.com/监控 resque 是否保持运行,因此可能与此有关。

答案1

localhost您是否让 Redis 在除或之外的接口上监听127.0.0.1?如果是这样,则停止命令永远不会发送到正确的接口,因为官方 Redis init 模板未能包含主机地址

/etc/init.d/redis我处理过的文件中,我必须定义REDISHOST=10.150.0.18,然后在第 30 行(查找“shutdown”)添加该主机参数:

$CLIEXEC -h $REDISHOST -p $REDISPORT shutdown

答案2

如果您像我一样,您需要在 redis.conf 中输入密码 (requirepass)。现在,如果没有密码,redis-cli 命令将不会响应。

在 /etc/init.d/redis 文件的前几行中查找 CLIEXEC 并更改默认

CLIEXEC=/usr/local/bin/redis-cli

CLIEXEC="/usr/local/bin/redis-cli -a <password>"

请注意引文。

当我这样做时,我不必包含 -h $REDISHOST 参数。

请参阅此处了解该想法的来源:https://groups.google.com/forum/#!topic/redis-db/ITtbA1S-GGg

答案3

对话此列表可以解决你的问题:

修改您的初始化脚本以在 redis-cli 调用中使用“-a”(auth)。

CLIEXEC="/usr/local/bin/redis-cli -a 密码"

换句话说,问题在于您必须输入 Redis 密码才能停止服务。修改脚本/etc/init.d/redis_port(或您可能拥有的任何其他初始化脚本)-a password将解决此问题。

答案4

你可以杀死redis进程:

$ ps -ef|grep "redis"

# kill $(cat /var/run/redis.pid)

相关内容