无法在127.0.0.1:6379连接到Redis:使用自制程序拒绝连接


120

使用自制软件安装Redis,但是当我尝试ping Redis时,显示此错误:

Could not connect to Redis at 127.0.0.1:6379: Connection refused

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

Answers:


281

安装后redis,输入terminal

redis-server

和Redis-Server将启动


1
但是,如何阻止它监听该端口/主机?
Afolabi Olaoluwa Akinwumi

@AfolabiOlaoluwaAkinwumi请参考如何停止redis服务器
LuFFy

3
对于来自命令提示符的窗口, cd C:\Program Files\Redis然后 redis-server
Pradeep Kumar Prabaharan

2
如何在后台连续运行redis-server,我正在使用ubuntu @LuFFy
AATHITH RAJENDRAN,

1
@AATHITHRAJENDRAN,请检查此答案,希望对您有所帮助
LuFFy

37

我在尝试弄清楚为什么通过启动它后无法连接到Redis时发现了这个问题brew services start redis

tl; dr

根据您的计算机或安装的最新程度,您可能会缺少用于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
    

最后,使用重新启动Redis brew services restart redis

您如何找到这个!

我浪费了很多时间试图弄清楚redis是否没有通过自制程序使用默认值以及它在哪个端口上。服务具有误导性,因为即使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行中也有错误!疯。
凯文·加格农

从冗长的开始就为我做了这件事。我在redis.conf中遇到问题。感谢
SangamAngre

18

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

redis-server &

在Ubuntu上使用Upstart运行Redis

我一直在尝试了解如何在Ubuntu上从头开始设置系统。我刚安装redis在盒子上,这就是以及需要注意的事项。

安装:

sudo apt-get install redis-server

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

要为以下命令禁用默认init.d脚本redis

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.confdaemonize yesdaemonize no。如果不进行更改,redis-server将会发生什么事情,那么它将分叉并对其进行守护进程,并且父进程将消失。发生这种情况时,请upstart认为该过程已终止/停止,您将无法从内部控制该过程upstart

现在,您可以使用以下命令来控制您的redis-server

sudo start redis-server
sudo restart redis-server
sudo stop redis-server

希望这对您有所帮助!


9

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

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

ps -ef | grep redis

结果是“ redis 1184 1 0...。/ usr / bin / redis-server 172.xxx:6379

然后可以使用-h(hostname)选项连接到Redis。

redis-cli -h 172.xxx


2

在我的情况下,密码包含一些字符,例如',更改后,服务器启动就没有问题。


1

我只是遇到了同样的问题,因为我在配置文件中使用了不正确的语法。我的意思是补充:

maxmemory-policy allkeys-lru

到我的配置文件,但只添加了:

allkeys-lru

这显然阻止了Redis解析配置文件,从而阻止了我通过cli连接。修复此语法后,我可以连接到Redis。


1

如果homebrew MacOS问题所在是/usr/local/var/log目录上缺少某种权限,请参阅此处的问题

为了解决这个问题,我删除了/usr/local/var/log并重新安装redisbrew reinstall redis


1

首先,您需要使用以下命令启动/启动所有redis节点,所有conf文件一个接一个。@注意:如果您正在设置集群,那么您应该有6个节点,其中3个将成为主节点,而3个将成为从属节点.redis-cli将使用--cluster命令从6个节点中自动选择主节点和从属节点,如我下面的命令所示。

[xxxxx@localhost redis-stable]$ redis-server xxxx.conf 

然后跑

[xxxxx@localhost redis-stable]$ redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 --cluster-replicas 1

上面的输出应该是这样的:

    >>> Performing hash slots allocation on 6 nodes...

自动设置所有内容的第二种方法:您可以使用utils / create-cluster脚本为您设置所有内容,例如启动所有节点,创建集群 :https://redis.io/topics/cluster-tutorial

谢谢



1

就像Aaron一样,在我看来,brew services listredis正在运行,但事实并非如此。我在以下位置的日志文件中找到了以下信息/usr/local/var/log/redis.log

4469:C 28 Feb 09:03:56.197 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
4469:C 28 Feb 09:03:56.197 # Redis version=4.0.9, bits=64, commit=00000000, modified=0, pid=4469, just started
4469:C 28 Feb 09:03:56.197 # Configuration loaded
4469:M 28 Feb 09:03:56.198 * Increased maximum number of open files to 10032 (it was originally set to 256).
4469:M 28 Feb 09:03:56.199 # Creating Server TCP listening socket 192.168.161.1:6379: bind: Can't assign requested address

事实证明,这是由于以下配置引起的:

bind 127.0.0.1 ::1 192.168.161.1

这是使我的VMWare Fusion虚拟机访问主机macOS上的Redis服务器所必需的。但是,如果虚拟机未启动,此绑定失败造成的Redis不启动在所有。因此,启动虚拟机解决了该问题。


0

试试这个 :

sudo service redis-server restart

我正在使用Windows WSL Ubuntu,并且在终端中始终出现错误。npm ERR!代码ELIFECYCLE npm ERR!errno 1因此,尝试了所有操作,尤其是在Windows中,它不起作用。这就是为什么尝试在Ubuntu上重新启动redis服务并能正常工作的原因!就这样。
Jhune Carlo Trogelio
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.