无法在 127.0.0.1:6379 连接到 Redis:使用自制软件拒绝连接
Posted
技术标签:
【中文标题】无法在 127.0.0.1:6379 连接到 Redis:使用自制软件拒绝连接【英文标题】:Could not connect to Redis at 127.0.0.1:6379: Connection refused with homebrew 【发布时间】:2017-08-09 00:18:38 【问题描述】:使用自制软件安装 Redis,但当我尝试 ping Redis 时显示此错误:
Could not connect to Redis at 127.0.0.1:6379: Connection refused
注意: 我试图关闭防火墙并编辑 conf 文件,但仍然无法 ping。 我正在使用 macOS Sierra 和自制版本 1.1.11
【问题讨论】:
【参考方案1】:安装redis
后,输入terminal
:
redis-server
Redis-Server 会启动
【讨论】:
但是,如何阻止它监听该端口/主机? @AfolabiOlaoluwaAkinwumi 请参考How can I stop redis-server 对于来自命令提示符的窗口,cd C:\Program Files\Redis
然后redis-server
如何在后台连续运行redis-server,我用的是ubuntu @LuFFy
@AATHITHRAJENDRAN,检查this answer,希望对您有所帮助【参考方案2】:
我在试图弄清楚为什么我在通过brew services start redis
启动它后无法连接到 redis 时发现了这个问题。
tl;博士
根据您的机器或安装的新鲜程度,您可能缺少配置文件或 redis 默认目录。
您需要一个位于/usr/local/etc/redis.conf
的配置文件。没有这个文件redis-server
将无法启动。您可以复制默认配置文件并从那里修改它
cp /usr/local/etc/redis.conf.default /usr/local/etc/redis.conf
您需要/usr/local/var/db/redis/
才能存在。你可以很容易地做到这一点
mkdir -p /usr/local/var/db/redis
最后用brew services restart redis
重启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 行被拒绝连接 我在 abstractconnection.php 第 155 行也有错误!疯了。 从详细开始为我做了这件事。我在 redis.conf 中遇到问题。谢谢brew services restart redis
对我来说是关键,所有其他 conf 文件等都已正确设置 - 服务显然遇到了一些麻烦!【参考方案3】:
如果安装后您需要一直运行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
希望这对您有所帮助!
【讨论】:
【参考方案4】:这对我有用:
sudo service redis-server start
【讨论】:
这仍然适用于 ubuntu 16.04 和 redis 6.0.6,很棒【参考方案5】:这是连接你的 redis 的更好方式。
首先这样查看redis服务器的ip地址。
ps -ef | grep redis
结果类似于“ redis 1184 1 0 .... /usr/bin/redis-server 172.x.x.x:6379
然后你可以像这样使用 -h(hostname) 选项连接到 redis。
redis-cli -h 172.x.x.x
【讨论】:
【参考方案6】:试试这个:
sudo service redis-server restart
【讨论】:
我正在使用 Windows WSL Ubuntu,并且在我的终端中不断出现错误。 npm 错误!代码 ELIFECYCLE npm 错误! errno 1 所以在上面尝试了所有方法,尤其是在 Windows 中它不起作用。这就是为什么尝试在 Ubuntu 上重新启动 redis 服务并且工作正常的原因!就是这样。【参考方案7】:我被困在这个问题上很长时间了。经过多次尝试,我能够正确配置它。
引发错误的原因可能不同。我试图提供克服这种情况的原因和解决方案。确保您已正确安装redis-server
。
ufw 防火墙不允许6379 Port
。
解决方案:输入以下命令sudo ufw allow 6379
问题可能与redis
用户的权限有关。可能是 redis 用户没有权限修改必要的redis
目录。 redis
用户应具有以下目录的权限:
/var/lib/redis
/var/log/redis
/run/redis
/etc/redis
要将所有者权限授予redis
用户,请键入以下命令:
sudo chown -R redis:redis /var/lib/redis
sudo chown -R redis:redis /var/log/redis
sudo chown -R redis:redis /run/redis
sudo chown -R redis:redis /etc/redis
。
现在通过以下命令重启redis-server
:
sudo systemctl restart redis-server
希望这对某人有所帮助。
【讨论】:
【参考方案8】:在 Apple Silicon 上连接 Redis 时出错(Macbook Pro M1 - 2020 年 12 月),您只需要知道两件事:
-
使用 sudo 运行 redis-server 将消除服务器启动错误
shell% sudo redis-server
-
为了将其作为服务“守护”运行,它将允许您在后台运行
shell% sudo redis-server --daemonize yes
使用以下步骤进行验证:
shell% redis-cli ping
希望这可以帮助所有真正担心缺乏相关文档的 Macbook Pro M1 用户。
【讨论】:
谢谢,我使用的是英特尔 MacBook,这对我有用。首先,运行redis-server --daemonize yes
,然后运行redis-cli ping
来打乒乓球,或者只运行redis-cli
在终端中运行快速命令。【参考方案9】:
首先,您需要使用以下命令启动/启动所有 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
谢谢
【讨论】:
【参考方案10】:redis-server --daemonize yes
我已经通过运行这个命令解决了这个问题。
【讨论】:
是的,这个很好用!!谢谢。 Macos 苹果 M1,moncentary【参考方案11】:我刚刚遇到了同样的问题,因为我在配置文件中使用了不正确的语法。我的意思是补充:
maxmemory-policy allkeys-lru
到我的配置文件,但只是添加:
allkeys-lru
这显然阻止了 Redis 解析配置文件,这反过来又阻止了我通过 cli 连接。修复此语法允许我连接到 Redis。
【讨论】:
【参考方案12】:在我的例子中,它是包含一些字符的密码,例如'
,更改后服务器启动没有问题。
【讨论】:
【参考方案13】:遇到homebrew MacOS
的问题,问题是在/usr/local/var/log
目录see issue here 上缺少某种权限
为了解决它我删除了/usr/local/var/log
并重新安装了redis brew reinstall redis
【讨论】:
【参考方案14】:就像Aaron 一样,在我的情况下brew services list
声称redis 正在运行,但实际上并没有。我在/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 根本无法启动。所以启动虚拟机就解决了问题。
【讨论】:
【参考方案15】:我试图将我在 wsl2 中运行的 Redis 与在 Windows 中运行的 vs 代码连接起来。
我列出了对我有用的方法以及我执行这些操作的顺序:
1) sudo ufw allow 6379
2) Update redis.conf to bind 127.0.0.1 ::1 192.168.1.7
3) sudo service redis-server restart
注意:这是我第一次在 wsl2 上安装 Redis,还没有运行一个命令。
让我知道它是否适合您。 谢谢。
【讨论】:
【参考方案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/
【讨论】:
【参考方案17】:就我而言,有人出现并错误地将 redis.conf 文件编辑为:
bind 127.0.0.1 ::1
bind 192.168.1.7
什么时候,真的需要这样(一行):
bind 127.0.0.1 ::1 192.168.1.7
【讨论】:
虽然这是新安装的,所以我认为问题不是奇怪的 redis.conf。【参考方案18】:我使用的是 Ubuntu 18.04
我刚刚在 CMD 中输入了这个命令
sudo systemctl start redis-server
现在它正在工作。所以我认为我的 redis 服务器没有启动,为什么它会显示错误
无法在 127.0.0.1:6379 连接到 Redis:连接被拒绝。
【讨论】:
【参考方案19】:Redis for Mac:
1- brew install redis 2- brew services 启动 redis 3- redis-cli ping
$ brew services start redis
$ brew services stop redis
$ brew services restart redis
午餐自动启动选项:
$ ln -sfv /usr/local/opt/redis/*.plist ~/Library/LaunchAgents
# autostart activate
$ launchctl load ~/Library/LaunchAgents/homebrew.mxcl.redis.plist
# autostart deactivate
$ launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.redis.plist
Redis conf 默认路径:/usr/local/etc/redis.conf
【讨论】:
以上是关于无法在 127.0.0.1:6379 连接到 Redis:使用自制软件拒绝连接的主要内容,如果未能解决你的问题,请参考以下文章
Redis 错误:错误:Redis 连接到 127.0.0.1:6379 失败 - 连接 ECONNREFUSED 127.0.0.1:6379
无法从外部 docker 连接到 dockerized redis 实例
Could not connect to Redis at 127.0.0.1:6379: 由于目标计算机积极拒绝,无法连