我显然有一个redis-server实例正在运行,因为当我试图通过输入redis-server启动一个新服务器时,我受到以下欢迎:

Opening port: bind: Address already in use

我不知道如何停止这个服务器,并启动一个新的。

当我在CLI中输入时,是否有任何命令可以附加到redis-server ?

我的操作系统是Ubuntu 10.04。


当前回答

如果你知道哪个端口(默认值:6379)你的redis服务器正在运行,你可以选择选项1,或者你可以检查你的redis进程,你可以用选项2杀死

选项1:关闭端口上的进程:

check     : sudo lsof -t -i:6379
kill      : sudo kill `sudo lsof -t -i:6379`

选项2: 找到之前运行的Redis服务器:

 ps auxx | grep redis-server

通过查找PID(进程ID) - Redis Sever来杀死特定的进程

kill -9 PID

现在启动你的redis服务器

redis-server /path/to/redis.conf 

其他回答

如果你在安装redis时做了安装(例如ubuntu),那么你可以这样做:

redis-cli shutdown

正如@yojimbo87所指出的:)

在CLI中输入SHUTDOWN

or

如果你不关心内存中的数据,你也可以输入SHUTDOWN NOSAVE来强制关闭服务器。

Redis-cli shutdown是最有效的。接受的答案不适合我(OSX Lion)。谢谢,@JesseBuesking。

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

如果你在docker容器中运行redis,目前的答案都没有帮助。你必须停止redis容器。否则,redis进程会一直刷新。

$ docker ps
CONTAINER ID        IMAGE                    PORTS                             
e1c008ab04a2        bitnami/redis:4.0.8-r0   0.0.0.0:6379->6379/tcp

$ docker stop e1c008ab04a2
e1c008ab04a2