Não foi possível conectar ao Redis em 127.0.0.1:6379: conexão recusada com homebrew


120

Usando o homebrew para instalar o Redis, mas quando tento executar o ping no Redis, ele mostra este erro:

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

Nota: Tentei desligar o firewall e editar o arquivo conf, mas ainda não consigo ping. Estou usando o macOS Sierra e o homebrew versão 1.1.11

Respostas:


281

Após a instalação redis, digite de terminal:

redis-server

E o Redis-Server será iniciado


1
No entanto, como faço para parar de escutar essa porta / host?
Afolabi Olaoluwa Akinwumi

@AfolabiOlaoluwaAkinwumi Consulte Como posso parar o redis-server
LuFFy

3
Para janelas do Prompt de Comando cd C:\Program Files\Redise , em seguida redis-server
Pradeep Kumar Prabaharan

2
como executar o redis-server continuamente em segundo plano, estou usando o ubuntu @LuFFy
AATHITH RAJENDRAN

1
@AATHITHRAJENDRAN, Verifique esta resposta , espero que ajude
LuFFy

37

Eu encontrei essa pergunta enquanto tentava descobrir por que não consegui me conectar ao redis após iniciá-lo via brew services start redis.

tl; dr

Dependendo da atualização da sua máquina ou instalação, você provavelmente está perdendo um arquivo de configuração ou um diretório para os padrões do Redis.

  1. Você precisa de um arquivo de configuração em /usr/local/etc/redis.conf. Sem este arquivo redis-servernão será iniciado. Você pode copiar o arquivo de configuração padrão e modificá-lo a partir dele com

    cp /usr/local/etc/redis.conf.default /usr/local/etc/redis.conf
    
  2. Você precisa /usr/local/var/db/redis/existir. Você pode fazer isso facilmente com

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

Finalmente, reinicie o redis com brew services restart redis.

Como você descobriu isso !?

Perdi muito tempo tentando descobrir se o redis não estava usando os padrões por meio do homebrew e em qual porta ele estava. Os serviços eram enganosos porque, embora redis-servernão tivessem sido realmente iniciados, brew services listainda mostrariam o redis como "iniciado". A melhor abordagem é usar o brew services --verbose start redisque mostrará que o arquivo de log está em /usr/local/var/log/redis.log. Olhando lá, encontrei a (s) arma (s) fumegante (s)

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

ou

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

Felizmente, o log tornou a solução acima óbvia.

Não posso simplesmente correr redis-server?

Com certeza você pode. Ele só vai ocupar um terminal ou interromper seu terminal ocasionalmente se você executar redis-server &. Também irá colocar dump.rdbem qualquer diretório em que você o executar, em ( pwd). Fiquei chateado por ter que remover o arquivo ou ignorá-lo no git, então decidi deixar o brew fazer o trabalho com os serviços.


obrigado, isso resolveu meu problema em um projeto laravel onde minha conexão foi recusada em abstractconnection.php linha 155
luckyguy73

Eu estava tendo um erro na linha 155 abstractconnection.php também! Louco.
Kevin Gagnon

Comece com verboso fez a coisa para mim. Eu estava tendo um problema no redis.conf. Obrigado
SangamAngre

18

Se após a instalação você precisar rodar o redistempo todo, basta digitar terminal:

redis-server &

Executando redis usando upstart no Ubuntu

Tenho tentado entender como configurar sistemas desde o início no Ubuntu. Acabei de instalar redisna caixa e aqui está como fiz isso e algumas coisas para observar.

Para instalar:

sudo apt-get install redis-server

Isso criará um redisusuário e instalará o init.dscript para ele. Como upstartagora é o substituto para o uso de init.d, acho que devo convertê-lo para executar usando upstart.

Para desativar o init.dscript padrão para redis:

sudo update-rc.d redis-server disable

Em seguida, crie /etc/init/redis-server.confcom o seguinte script:

description "redis server"

start on runlevel [23]
stop on shutdown

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

respawn

Para que serve este script para upstartsaber qual comando executar para iniciar o processo. A última linha também diz upstartpara continuar tentando reaparecer se ele morrer.

Uma coisa que eu tive que mudar /etc/redis/redis.confé daemonize yespara daemonize no. O que acontecerá se você não mudar isso redis-serverirá bifurcar e daemonizar a si mesmo, e o processo pai irá embora. Quando isso acontece, upstartpensa que o processo morreu / parou e você não terá controle sobre o processo por dentro upstart.

Agora você pode usar os seguintes comandos para controlar o seu redis-server:

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

Espero que tenha sido útil!


9

É a melhor maneira de se conectar ao seu redis.

Em primeiro lugar, verifique o endereço IP do servidor redis como este.

ps -ef | grep redis

O resultado é uma espécie de "redis 1184 1 0 .... / usr / bin / redis-server 172.xxx:6379

E então você pode se conectar ao redis com a opção -h (hostname) como esta.

redis-cli -h 172.xxx


2

No meu caso, era a senha que continha alguns caracteres como ', após alterá-la o servidor iniciou sem problemas.


1

Eu simplesmente tive esse mesmo problema porque usei sintaxe inadequada no meu arquivo de configuração. Eu quis acrescentar:

maxmemory-policy allkeys-lru

ao meu arquivo de configuração, mas em vez disso, apenas adicionei:

allkeys-lru

o que evidentemente impediu o Redis de analisar o arquivo de configuração, o que por sua vez me impediu de conectar por meio do CLI. Corrigir essa sintaxe permitiu que eu me conectasse ao Redis.


1

Tive esse problema com homebrew MacOSo problema era algum tipo de permissão ausente no /usr/local/var/logdiretório, consulte o problema aqui

Para resolver isso, apaguei /usr/local/var/loge reinstalei o redisbrew reinstall redis


1

Primeiro você precisa ligar / iniciar todos os nós do redis usando o comando abaixo, um por um para todos os arquivos conf. @Nota: se você está configurando o cluster, então você deve ter 6 nós, 3 serão mestre e 3 serão escravos. Redis-cli irá selecionar automaticamente mestre e escravo de 6 nós usando o comando --cluster como mostrado nos meus comandos abaixo .

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

então corra

[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

a saída acima deve ser como:

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

2ª maneira de configurar todas as coisas automaticamente: você pode usar scripts utils / create-cluster para configurar tudo para você, como iniciar todos os nós, criar um cluster e seguir https://redis.io/topics/cluster-tutorial

obrigado


1

Este trabalho para mim:

sudo service redis-server start

1

Assim como Aaron , no meu caso brew services listalegou que o redis estava funcionando, mas não estava. Encontrei as seguintes informações em meu arquivo de registro em /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

Isso acabou sendo causado pela seguinte configuração:

bind 127.0.0.1 ::1 192.168.161.1

que era necessário para dar à minha máquina virtual VMWare Fusion acesso ao servidor redis no macOS, o host. No entanto, se a máquina virtual não foi iniciado, essa falha de ligação causada Redis não iniciar em tudo . Portanto, iniciar a máquina virtual resolveu o problema.


1

Experimente isto:

sudo service redis-server restart

Estou usando o Windows WSL Ubuntu e recebo erros em meu terminal. npm ERR! código ELIFECYCLE npm ERR! errno 1 Então tentei de tudo no topo, não funciona principalmente no Windows. É por isso que tentei reiniciar o serviço redis no Ubuntu e funciona perfeitamente bem! Isso é tudo.
Jhune Carlo Trogelio
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.