如何停止redis-server?

时间:2011-08-02 10:07:50

标签: database ubuntu redis

我显然有redis-server个实例正在运行,因为当我尝试通过输入redis-server启动新服务器时,我会收到以下内容:

Opening port: bind: Address already in use

我无法弄清楚如何停止此服务器并启动一个新服务器。

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

我的操作系统是Ubuntu 10.04。

28 个答案:

答案 0 :(得分:429)

连接到节点实例并使用shutdown命令,或者如果您使用的是ubuntu,则可以尝试通过init.d重新启动redis服务器:

/etc/init.d/redis-server restart

或停止/启动它:

/etc/init.d/redis-server stop
/etc/init.d/redis-server start

在Mac上

redis-cli shutdown

答案 1 :(得分:187)

更清晰,更可靠的方法是进入redis-cli,然后输入shutdown

在redis-cli中,输入help @server,您会在列表底部看到这个:

  

SHUTDOWN - 摘要:将数据集同步保存到磁盘然后   从那以后关闭服务器: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...

答案 2 :(得分:130)

redis-cli shutdown最有效。接受的答案对我不起作用(OSX Lion)。谢谢,@ JesseBuesking。

答案 3 :(得分:25)

对于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-services可用于启动,停止和重启服务。 homebrew-services

运行时会自动安装

brew services

brew services start|run redis 
brew services stop redis
brew services restart redis

如果您使用run,则它不会在登录时启动(也不会启动)。 start将启动redis服务,并在登录和启动时添加它。

答案 4 :(得分:23)

在CLI中输入SHUTDOWN

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

答案 5 :(得分:16)

试试killall redis-server。您也可以使用ps aux查找服务器的名称和pid,然后使用kill -9 here_pid_number将其终止。

答案 6 :(得分:11)

选项1:转到redis安装目录并导航到src,在我的情况下:

/opt/redis3/src/redis-cli -p 6379 shutdown

其中6379是默认端口。

选项2:找到redis进程并终止

ps aux | grep redis-server

t6b3fg   22292  0.0  0.0 106360  1588 pts/0    S+   01:19   0:00 /bin/sh /sbin/service redis start
t6b3fg   22299  0.0  0.0  11340  1200 pts/0    S+   01:19   0:00 /bin/sh /etc/init.d/redis start

然后发起杀戮:

kill -9 22292

kill -9 22299

我正在使用Centos 6.7,x86_64

希望有所帮助

答案 7 :(得分:10)

另一种方式可能是:

ps -ef | grep -i 'redis-server'
kill -9 PID owned by redis

适用于* NIX& OSX

答案 8 :(得分:7)

使用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

答案 9 :(得分:6)

MacOSX - 工作:)

步骤1:找到以前运行的Redis服务器

ps auxx | grep redis-server

步骤2:通过查找PID(进程ID) - Redis Sever

来终止特定进程
kill -9 PID

答案 10 :(得分:5)

如果你知道它将在哪个端口上运行(默认情况下它是6379),你可以使用下面的命令来获取使用该端口的进程的pid,然后可以对同一个pid执行kill命令。

sudo lsof -i : <port> | awk '{print $2}'

上面的命令会给你pid。

杀死<pid>;

这会关闭您的服务器。

答案 11 :(得分:4)

systemd,ubuntu 16.04:

$ sudo systemctl is-active redis-server
active

$ sudo systemctl is-enabled redis-server
enabled

$ sudo systemctl disable redis-server
Synchronizing state of redis-server.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install disable redis-server
Removed /etc/systemd/system/redis.service.

$ sudo systemctl stop redis-server

答案 12 :(得分:4)

通常这个问题出现在我以不规则的方式关闭计算机(或离开运行)之后..我相信端口被卡住打开,而进程停止但继续被绑定到前一个端口。

修复的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

很高兴去。

答案 13 :(得分:3)

就我而言:

/etc/init.d/redismaster stop
/etc/init.d/redismaster start

要了解您的服务名称,您可以运行:

sudo updatedb
locate redis

它会显示系统中的每个Redis文件。

答案 14 :(得分:2)

以下是我为MAC工作的

 ps aux | grep 'redis-server' | awk '{print $2}' | xargs sudo kill -9

答案 15 :(得分:2)

Another way could be :

brew services stop redis

答案 16 :(得分:1)

我不是专门针对redis,而是针对服务器:

什么操作系统或分发?通常会有一个stop或/etc/init.d / ...命令,它可以在pid文件中查找现有的pid。

您可以使用sudo netstat -nlpt查找已绑定到端口的进程(linux选项;其他netstat风格会有所不同)并发出信号停止。我会在正在运行的服务器上使用kill -9,除非确实没有其他信号或方法可以将其关闭。

答案 17 :(得分:1)

我建议禁用 Redis-server,它可以防止计算机重新启动时自动启动,并且对于使用 docker 之类的工具等非常有用。

第一步:停止redis-server

sudo service redis-server stop

第 2 步:禁用 redis-server

sudo systemctl disable redis-server

如果需要redis,可以这样启动:

sudo service redis-server start

答案 18 :(得分:1)

以下命令适用于 Ubuntu Server

$ service /etc/init.d/redis_6379 stop
$ service /etc/init.d/redis_6379 start
$ service /etc/init.d/redis_6379 restart

答案 19 :(得分:0)

检查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 redis    redis      40 Jul 20 17:37 redis

如果您需要有关Linux权限的进阶知识,请check this out。但是问题是我以我的部署用户身份执行重启,上面的权限是r-x,不允许我的用户写入PIDFile目录。

一旦意识到,我使用root用户登录,在redis(service redis restart)上重新启动重新启动命令,一切正常。真是头疼,但希望这可以节省一些时间。

答案 20 :(得分:0)

如果您正在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

答案 21 :(得分:0)

如果知道您的Redis服务器在哪个端口(默认值:6379)上运行,则可以使用选项1 ,或者可以检查自己的Redis进程,并且可以使用选项2进行终止< / strong>

选项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 

答案 22 :(得分:0)

如果您在安装 redis 时做了 make install (例如ubuntu),则可以执行以下操作:

redis-cli shutdown

@ yojimbo87 指出:)

答案 23 :(得分:0)

Redis具有配置参数pidfile(例如/etc/redis.conf-选中redis source code),例如:

# 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停止脚本(改编为default redis 5.0 init.d script in redis source code):

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

答案 24 :(得分:0)

停止Redis服务器

sudo service redis-server stop

并使用

检查其状态
sudo service redis-server status

答案 25 :(得分:0)

在MacOSX上,

这对我有用

/etc/init.d/redis restart

/etc/init.d/redis stop

/etc/init.d/redis start

答案 26 :(得分:0)

如果Redis是通过snap安装的:

sudo snap stop redis.server

答案 27 :(得分:-1)

您可以尝试以下代码:

sudo kill -9 $(ps aux | grep 'redis' | awk '{print $2}')