我显然有一个redis-server实例正在运行,因为当我试图通过输入redis-server启动一个新服务器时,我受到以下欢迎:
Opening port: bind: Address already in use
我不知道如何停止这个服务器,并启动一个新的。
当我在CLI中输入时,是否有任何命令可以附加到redis-server ?
我的操作系统是Ubuntu 10.04。
我显然有一个redis-server实例正在运行,因为当我试图通过输入redis-server启动一个新服务器时,我受到以下欢迎:
Opening port: bind: Address already in use
我不知道如何停止这个服务器,并启动一个新的。
当我在CLI中输入时,是否有任何命令可以附加到redis-server ?
我的操作系统是Ubuntu 10.04。
当前回答
以root用户在终端中停止redis服务器类型
sudo service redis-server stop
停止redis-server后会显示此消息
Stopping redis-server: redis-server.
如果你想启动redis-server类型
sudo service redis-server start
如果要重新启动服务器类型
sudo service redis-server restart
其他回答
检查redis命令是否对你不起作用的一件事是如果你的redis-server。Pid实际上是被创建的。您指定该文件所在的位置
/etc/systemd/system/redis.service
它应该有一个类似这样的部分:
[Service]
Type=forking
User=redis
Group=redis
ExecStart=/usr/bin/redis-server /etc/redis/redis.conf
PIDFile=/run/redis/redis-server.pid
TimeoutStopSec=0
Restart=always
检查PIDFile目录的位置和权限(在我的例子中是'/run/redis')。我试图重新启动以部署登录的服务,但目录权限被列为
drwxrwsr-x 2 雷迪斯 雷迪斯 40 七月 20 17:37 雷迪斯
如果你需要一个关于linux权限的复习,看看这个。但问题是,我正在以我的部署用户执行重启,上面的权限是r-x,不允许我的用户写入PIDFile目录。
当我意识到这一点时,我使用root登录,在redis上重新运行重启命令(service redis restart),一切都正常了。这很让人头疼,但希望这能为大家节省一点时间。
一个更干净、更可靠的方法是进入redis-cli,然后输入shutdown
在redis-cli中,输入help @server,你会在列表底部看到:
SHUTDOWN - summary:同步保存数据集到磁盘,然后 从:0.07开始关闭服务器
如果你在终端中运行一个redis-server实例,你会看到:
User requested shutdown...
[6716] 02 Aug 15:48:44 * Saving the final RDB snapshot before exiting.
[6716] 02 Aug 15:48:44 * DB saved on disk
[6716] 02 Aug 15:48:44 # Redis is now ready to exit, bye bye...
连接到节点实例并使用shutdown命令,或者如果你在ubuntu上,你可以尝试通过init.d重新启动redis服务器:
/etc/init.d/redis-server restart
或者stop/start it:
/etc/init.d/redis-server stop
/etc/init.d/redis-server start
在Mac
redis-cli shutdown
要优雅地使用密码关闭特定实例,而不诉诸于暴力杀死命令,请使用:
Redis-cli -p <port> -a <pass> shutdown
root@machine:~# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 105 0.1 0.0 60552 10772 ? Ssl 23:27 0:02 redis-server 127.0.0.1:10002
root 111 0.1 0.0 60552 10900 ? Ssl 23:28 0:02 redis-server 127.0.0.1:10003
root 117 0.1 0.0 60552 10872 ? Ssl 23:28 0:02 redis-server 127.0.0.1:10004
root@machine:~# redis-cli -p 10002 -a mypassword shutdown
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
root@machine:~# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 111 0.1 0.0 60552 10900 ? Ssl 23:28 0:02 redis-server 127.0.0.1:10003
root 117 0.1 0.0 60552 10872 ? Ssl 23:28 0:02 redis-server 127.0.0.1:10004
root@machine:~#
如果有大量的实例,就需要编写一个批处理脚本来循环遍历所有实例,以便主关机。
通常这个问题出现后,我关闭我的电脑(或离开运行)不规则的方式。我认为端口被卡住打开,而进程停止,但继续绑定到前一个端口。
9/10次修复可以是:
$ ps aux | grep redis
-> MyUser 2976 0.0 0.0 2459704 320 ?? S Wed01PM 0:29.94 redis-server *:6379
$ kill 2976
$ redis-server
准备好了。