使用Homebrew时无法连接到位于127.0.0.1:6379的Redis:连接被拒绝

272
使用homebrew安装Redis,但当我尝试ping Redis时,出现以下错误:
Error: Connection reset by peer
Could not connect to Redis at 127.0.0.1:6379: Connection refused

注意:我尝试关闭防火墙并编辑配置文件,但仍无法ping通。我正在使用macOS Sierra和homebrew版本1.1.11。

22个回答

555
安装完redis后,在终端中输入以下命令:
redis-server

Redis-Server将会被启动


2
然而,我该如何停止它监听那个端口/主机? - Afolabi Olaoluwa
6
使用命令提示符(Command Prompt)打开Windows操作系统后,输入以下两个命令:
  1. cd C:\Program Files\Redis:进入Redis软件安装的目录。
  2. redis-server:启动Redis服务。
- Pradeep Kumar
2
如何在后台持续运行redis-server,我正在使用Ubuntu @LuFFy - AATHITH RAJENDRAN
2
@AATHITHRAJENDRAN,请查看这个答案,希望能有所帮助。 - LuFFy
2
在命令结尾处设置“&”以在后台运行该命令。 - Iman
显示剩余3条评论

63

我在尝试通过brew services start redis启动redis后无法连接到它时,发现了这个问题。

简而言之

根据您的机器或安装的新鲜程度,您可能缺少redis默认配置文件或目录。

  1. 您需要在 /usr/local/etc/redis.conf 路径下创建一个配置文件。如果没有这个文件,redis-server 将无法启动。您可以复制默认的配置文件,并从那里进行修改:

    cp /usr/local/etc/redis.conf.default /usr/local/etc/redis.conf
    
  2. 您需要创建目录 /usr/local/var/db/redis/。您可以使用以下命令轻松完成:

    mkdir -p /usr/local/var/db/redis
    

最后只需使用brew services restart redis重新启动redis即可。

你是怎么找到这个的?

我浪费了很多时间试图弄清楚redis是否没有通过homebrew使用默认设置以及它在哪个端口上。Services会让人产生误导,因为即使redis-server实际上没有启动,brew services list仍然会显示redis为“已启动”。最好的方法是使用brew services --verbose start redis,它将向您显示日志文件位于/usr/local/var/log/redis.log。在那里我找到了关键证据。

Fatal error, can't open config file '/usr/local/etc/redis.conf'

或者

Can't chdir to '/usr/local/var/db/redis/': No such file or directory

谢天谢地,日志让上面的解决方案显而易见。

我能不能只运行redis-server

当然可以。如果你运行redis-server &,它会占用一个终端或不时中断你的终端。此外,它将把dump.rdb放在你运行它的任何目录中(pwd)。我厌烦了删除文件或在git中忽略它,所以我想让brew通过服务来完成这项工作。


谢谢,这解决了我的问题。我在一个Laravel项目中遇到了连接被拒绝的问题,具体是在abstractconnection.php的155行。 - luckyguy73
我也在abstractconnection.php的155行遇到了错误!太疯狂了。 - Kevin Gagnon
开始使用详细模式为我解决了问题。我在redis.conf中遇到了问题。谢谢。 - SangamAngre
brew services restart redis 对我很关键,在此之前所有其他的配置文件等都已经设置正确- 服务显然只是出了些问题! - jmcgrory

32
redis-server --daemonize yes

我通过运行此命令解决了这个问题。


1
是的,这个很棒!!谢谢。MacOS 苹果 M1,Moncentary。 - Frank Guo
1
重新加载后Ubuntu服务器上的有用解决方案 - Zarkys Salas

26

如果安装后需要一直运行redis,只需在终端中输入:

redis-server &

在Ubuntu上使用upstart运行redis

我一直在尝试了解如何从头开始在Ubuntu上设置系统。我刚刚将redis安装到了这台机器上,以下是我的操作方法和一些需要注意的事项。

安装命令:

sudo apt-get install redis-server

这将创建一个redis用户并安装其init.d脚本。由于upstart现在替代了使用init.d,我认为应该将其转换为使用upstart运行。

要禁用redis的默认init.d脚本:

sudo update-rc.d redis-server disable

然后创建/etc/init/redis-server.conf文件并添加以下脚本:

description "redis server"

start on runlevel [23]
stop on shutdown

exec sudo -u redis /usr/bin/redis-server /etc/redis/redis.conf

respawn

这段代码是用于告诉upstart要运行哪个命令来启动进程。最后一行还告诉upstart如果进程停止了就继续尝试重启。
/etc/redis/redis.conf文件中,我必须将daemonize yes更改为daemonize no。如果不更改,则redis-server将分叉并将自身守护,父进程随之终止。当这种情况发生时,upstart认为该进程已经死亡/停止,你将无法从upstart内部控制该进程。
现在,你可以使用以下命令来控制redis-server
sudo start redis-server
sudo restart redis-server
sudo stop redis-server

希望这对您有所帮助!

24

这对我起作用:

sudo service redis-server start

这在Ubuntu 16.04和Redis 6.0.6上仍然有效,非常好。 - salimsaid

16

日期:2021年12月

出现这个错误有几个可能原因。我看了一篇文章来解决我的问题,所以我总结了一下需要逐一检查的内容。

1 检查:Redis-Server未启动

redis-server

Also to run Redis in the background, the following command could be used.

redis-server --daemonize yes

2. 检查:防火墙限制

sudo ufw status (inactive)
sudo ufw active (for making active it might disable ssh when first time active. So enable port 22 to access ssh.)
sudo ufw allow 22
sudo ufw allow 6379

3. 检查:资源使用情况

ps -aux | grep redis

4. 配置设置限制

sudo vi /etc/redis/redis.conf.

注释以下行。

# bind 127.0.0.1 ::1

注意:对于恶意行为者来说,发出请求或获取服务器访问权限将更加困难。确保绑定到正确的IP地址网络。

希望能对某些人有所帮助。欲了解更多信息,请阅读以下文章。

https://bobcares.com/blog/could-not-connect-to-redis-connection-refused/


10
试试这个:
sudo service redis-server restart

我正在使用Windows WSL Ubuntu,并且在终端中不断出现错误。 npm ERR!code ELIFECYCLE npm ERR!errno 1因此,我尝试了所有顶部的方法,但在Windows上特别不起作用。这就是为什么我尝试重新启动Ubuntu上的redis服务,它完美地运行!就这些。 - Jhune Carlo Trogelio

9

这是连接到你的Redis的更好方法。

首先,像这样检查Redis服务器的IP地址。

ps -ef | grep redis

结果类似于 "redis 1184 1 0 .... /usr/bin/redis-server 172.x.x.x:6379"

然后,你可以使用-h(主机名)选项连接到Redis,例如:

redis-cli -h 172.x.x.x


7

当我尝试使用cmd redis-cli时,出现了“无法连接到127.0.0.1:6379的Redis:连接被拒绝”的错误,但我在github上找到了解决方案。

原因:值得注意的是,如果您正在生产环境中使用Redis,您可能希望在后台运行Redis。

您可以尝试以下命令来解决问题:

redis-server --daemonize yes


谢谢,这帮助我在我的本地机器上运行Ubuntu 20.04开始了Radis。 - undefined

6

在 Apple Silicon 上连接 Redis 出错(Macbook Pro M1 - 2020 年 12 月),你只需要知道两件事情:

  1. 使用 sudo 运行 redis-server 将会删除服务器启动错误

shell% sudo redis-server

  1. 将其作为服务“daemonize”运行,可以允许你在后台运行

shell% sudo redis-server --daemonize yes

使用以下步骤进行验证: shell% redis-cli ping

希望这可以帮助所有真正关注此问题的 Macbook Pro M1 用户,因为缺乏相关文档使得操作变得困难。


1
谢谢,我正在使用Intel MacBook,这对我有用。首先运行redis-server --daemonize yes,然后运行redis-cli ping以获取Pong,或者只需要在终端中运行redis-cli即可快速执行命令。 - Kingston Fortune

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接