大部分情况下,当我重启 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)