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

Opening port: bind: Address already in use

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

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

我的操作系统是Ubuntu 10.04。


当前回答

我的情况是:

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

要找出你的服务名称,你可以运行:

sudo updatedb
locate redis

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

其他回答

如果你在安装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命令是否对你不起作用的一件事是如果你的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),一切都正常了。这很让人头疼,但希望这能为大家节省一点时间。

下面的命令适用于我的Ubuntu服务器

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

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

kill -9 22292

kill -9 22299

我使用的是Centos 6.7, x86_64

希望能有所帮助