我显然redis-server
正在运行一个实例,因为当我尝试通过输入来启动新服务器时,遇到redis-server
了以下问题:
Opening port: bind: Address already in use
我不知道如何停止此服务器并启动新服务器。
redis-server
在CLI中键入命令时,可以追加任何命令吗?
我的操作系统是Ubuntu 10.04。
redis-cli ping
。正在运行的Redis服务器将以响应PONG
。
我显然redis-server
正在运行一个实例,因为当我尝试通过输入来启动新服务器时,遇到redis-server
了以下问题:
Opening port: bind: Address already in use
我不知道如何停止此服务器并启动新服务器。
redis-server
在CLI中键入命令时,可以追加任何命令吗?
我的操作系统是Ubuntu 10.04。
redis-cli ping
。正在运行的Redis服务器将以响应PONG
。
Answers:
连接到节点实例并使用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
launchctl
要做到这一点,并在其他系统上,systemctl
或者service
。
service redis-server stop
和。service redis-server start
apt-get install redis-server
一种更干净,更可靠的方法是进入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...
redis-cli shutdown
。(例如,您可以发送任何类似的命令redis-cli set cat dog; redis-cli get cat
)
redis-cli set cat dog; redis-cli get cat
更改为redis-cli -a mypassword set cat dog; redis-cli -a mypassword get cat
,在执行一些命令后可能会很烦人。
alias redis-cli="redis-cli -a mypassword"
。这样,您可以像在我的原始评论中那样拨打电话,而不必在每次使用时都重新提供密码。
redis-cli shutdown
最有效。接受的答案对我不起作用(OSX Lion)。谢谢@JesseBuesking。
redis-cli.exe shutdown
redis-cli --help
本来可以解决这个问题。
对于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-services
,Homebrew具有可用于启动,停止和重新启动服务的功能。自制服务
brew services
运行时自动安装。
brew services start|run redis
brew services stop redis
brew services restart redis
如果使用run
,则它将不会在登录时启动(也不会启动)。start
将启动该redis
服务,并在登录和启动时将其添加。
brew services stop redis
也可以使用!:)
尝试killall redis-server
。您也可以使用ps aux
查找服务器的名称和pid,然后使用杀死它kill -9 here_pid_number
。
选项1:src
在我的情况下,转到redis安装目录并导航至:
/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
希望能帮助到你
以root用户停止终端中的redis服务器类型
sudo service redis-server stop
停止redis服务器后,将显示该消息
Stopping redis-server: redis-server.
如果要启动redis-server类型
sudo service redis-server start
如果要重新启动服务器类型
sudo service redis-server restart
service --status-all
不会显示redis,因此任何service
命令都将失败redis-server
。但是redis确实显示在中ps -ef
。我只是找不到任何相关文档。
sudo service redis start/stop/status
上的外观相同,两者都可以。
另一种方法是:
ps -ef | grep -i 'redis-server'
kill -9 PID owned by redis
适用于* NIX和OSX
MacOSX-工作正常:)
步骤1:查找先前正在运行的Redis服务器
ps auxx | grep redis-server
第2步:通过找到PID(进程ID)杀死特定进程-Redis Sever
kill -9 PID
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
另一种方法可能是:
brew services stop redis
以下在MAC上为我工作
ps aux | grep 'redis-server' | awk '{print $2}' | xargs sudo kill -9
如果您正在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
如果您知道Redis服务器在哪个端口(默认值:6379)上运行,则可以使用选项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命令是否对您不起作用的一件事是,是否实际上正在创建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权限的进阶知识,请查看。但是问题是我以我的部署用户的身份执行重启,上面的权限是rx,不允许我的用户写入PIDFile目录。
意识到这一点后,我使用root登录,然后在redis(service redis restart
)上重新运行restart命令,一切正常。那是头疼的事,但希望这可以节省一些时间。
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源代码中的自适应默认redis 5.0 init.d脚本):
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