无法在 127.0.0.1:6379 连接到 Redis:自制软件拒绝连接

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

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

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

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

安装 redis 后,从 terminal 输入:

redis-server

Redis-Server 将启动

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

tl;博士

根据您的机器或安装的新旧程度,您可能缺少配置文件或 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 是否没有通过自制软件使用默认设置以及它在哪个端口上。服务具有误导性,因为即使 redis-server 尚未实际启动,brew services list 仍会将 redis 显示为 "started." 最好的方法是使用 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 使用服务来完成工作。

我刚刚遇到了同样的问题,因为我在我的配置文件中使用了不正确的语法。我想添加:

maxmemory-policy allkeys-lru

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

allkeys-lru

这显然阻止了 Redis 解析配置文件,这反过来又阻止了我通过 cli 进行连接。修复此语法使我能够连接到 Redis。

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

如果安装后您需要一直运行 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 yesdaemonize no。如果您不更改它会发生什么,那么 redis-server 将分叉并自行守护进程,父进程就会消失。发生这种情况时,upstart 认为该进程有 died/stopped,您将无法从 upstart.

中控制该进程

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

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

希望对您有所帮助!

这是连接到您的 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

homebrew MacOS 有这个问题,问题是 /usr/local/var/log 目录 see issue here

缺少某种权限

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

首先你需要up/start所有的redis节点使用下面的命令,一个一个的配置文件。 @注意:如果你正在设置集群,那么你应该有 6 个节点,3 个为主节点,3 个为 slave.redis-cli 将使用 --cluster 命令自动 select 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

谢谢

这对我有用:

sudo service redis-server start

就像 一样,在我的例子中 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根本就没有启动。于是启动虚拟机解决问题

试试这个:

sudo service redis-server restart

我纠结了好久。经过多次尝试,我能够正确配置它。

引发错误的原因可能多种多样。我正在尝试提供克服这种情况的原因和解决方案。确保您已正确安装 redis-server

  1. 6379 Port 不被 ufw 防火墙所允许。

    解决方案:输入以下命令sudo ufw allow 6379

  2. 问题可能与 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

希望这对某些人有所帮助。

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

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

shell% sudo redis-server

  1. 对于运行将其作为服务“守护进程”,它将允许您运行在后台

shell% sudo redis-server --daemonize yes

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

希望这对所有真正担心缺乏相关文档的 Macbook Pro M1 用户有所帮助。

就我而言,有人出现并将 redis.conf 文件错误地编辑为:

bind 127.0.0.1 ::1
bind 192.168.1.7

什么时候,真的需要这样(一行):

bind 127.0.0.1 ::1 192.168.1.7

我正在使用 Ubuntu 18.04 我刚刚在CMD中输入了这个命令 sudo systemctl start redis-server 它现在正在工作。所以我认为我的 redis 服务器没有启动,所以它向我显示错误 无法在 127.0.0.1:6379 连接到 Redis:连接被拒绝

我试图在 Windows.

中从 vs 代码 运行ning 连接 wsl2 中的 Redis 运行ning

我列出了对我有用的方法以及我执行这些操作的顺序:

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,还没有 运行 一个命令。

让我知道它是否适合您。 谢谢

redis-server --daemonize yes

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

用于 Mac 的 Redis:

1- brew 安装 redis
2- brew 服务启动 redis
3- redis-cli 平

$ 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

日期:2021 年 12 月

这个错误有几个原因。我读了一篇文章来为我解决这个问题。所以我就把检查的内容一一总结一下。

1 检查:Redis 服务器未启动

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

Note: It will be more difficult for malicious actors to make requests or gain access to your server. Make sure you're bound to correct IP address network.

希望对大家有所帮助。有关详细信息,请阅读以下文章。

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