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

时间:2017-03-17 12:27:14

标签: redis redis-server

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

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

注意: 我试图关闭防火墙和编辑conf文件也不能。 我使用macOS Sierra和自制版本1.1.11

15 个答案:

答案 0 :(得分:172)

安装redis后,从terminal输入

redis-server

Redis-Server将启动

答案 1 :(得分:23)

我在尝试找出为什么在通过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
    
  3. 最后只需使用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与服务一起工作。

答案 2 :(得分:7)

如果aftre安装,您需要一直运行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.conf更改的一件事是将daemonize yes更改为daemonize no。如果你不改变它会发生什么,redis-server会自行分叉和守护,父进程就会消失。发生这种情况时,upstart认为流程已经过期/停止,您无法在upstart内控制流程。

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

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

希望这有用!

答案 3 :(得分:5)

为我工作:

sudo service redis-server start

答案 4 :(得分:2)

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

答案 5 :(得分:2)

在 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 用户。

答案 6 :(得分:1)

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

答案 7 :(得分:1)

就像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根本无法启动 。因此,启动虚拟机解决了该问题。

答案 8 :(得分:1)

尝试一下:

sudo service redis-server restart

答案 9 :(得分:0)

我遇到了同样的问题,因为我在配置文件中使用了不正确的语法。我打算补充一下:

maxmemory-policy allkeys-lru

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

allkeys-lru

显然阻止了Redis解析配置文件,这反过来阻止我通过cli连接。修复此语法允许我连接到Redis。

答案 10 :(得分:0)

遇到homebrew MacOS问题的原因是/usr/local/var/log目录see issue here上缺少某种权限

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

答案 11 :(得分:0)

首先,您需要使用以下命令启动/启动所有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

谢谢

答案 12 :(得分:0)

我坚持了很长时间。经过大量尝试,我能够对其进行正确的配置。

引发错误的原因可能有多种。我正在尝试提供从这种情况中克服的原因和解决方案。

    ufw防火墙不允许
  1. person_id

    解决方案:键入以下命令6379 Port

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

希望这对某人有帮助。

答案 13 :(得分:0)

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

答案 14 :(得分:-1)

在我的情况下,有人一起去,并错误地编辑redis.conf文件,以这样的:

bind 127.0.0.1 ::1
bind 192.168.1.7

的情况下,它确实需要是本(一行):

bind 127.0.0.1 ::1 192.168.1.7