我显然有一个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。
当前回答
Redis有配置参数pidfile(例如/etc/redis.conf -检查Redis源代码),例如:
# If a pid file is specified, Redis writes it where specified at startup
# and removes it at exit.
#
# When the server runs non daemonized, no pid file is created if none is
# specified in the configuration. When the server is daemonized, the pid file
# is used even if not specified, defaulting to "/var/run/redis.pid".
#
pidfile /var/run/redis.pid
如果它已经设置或可以设置,可以使用ps + grep来搜索进程id (pid),而不是像这样使用:
kill $(cat /var/run/redis.pid)
如果需要,一个可以使redis停止脚本像这样(改编默认redis 5.0初始化。D脚本在redis源代码):
PIDFILE=/var/run/redis.pid
if [ ! -f $PIDFILE ]
then
echo "$PIDFILE does not exist, process is not running"
else
PID=$(cat $PIDFILE)
echo "Stopping ..."
kill $PID
while [ -x /proc/${PID} ]
do
echo "Waiting for Redis to shutdown ..."
sleep 1
done
echo "Redis stopped"
fi
其他回答
在CLI中输入SHUTDOWN
or
如果你不关心内存中的数据,你也可以输入SHUTDOWN NOSAVE来强制关闭服务器。
如果你在安装redis时做了安装(例如ubuntu),那么你可以这样做:
redis-cli shutdown
正如@yojimbo87所指出的:)
对于OSX,我创建了以下别名用于启动和停止redis(安装在Homebrew中):
alias redstart='redis-server /usr/local/etc/redis/6379.conf'
alias redstop='redis-cli -h 127.0.0.1 -p 6379 shutdown'
这对当地的发展很有帮助!
Homebrew现在有了Homebrew服务,可以用来启动、停止和重新启动服务。homebrew-services
Brew服务在运行时自动安装。
brew services start|run redis
brew services stop redis
brew services restart redis
如果您使用run,那么它将不会在登录(或引导)时启动。Start将启动redis服务,并在登录和启动时添加它。
要优雅地使用密码关闭特定实例,而不诉诸于暴力杀死命令,请使用:
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:~#
如果有大量的实例,就需要编写一个批处理脚本来循环遍历所有实例,以便主关机。
一个更干净、更可靠的方法是进入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...