Impossibile connettersi a Redis a 127.0.0.1:6379: connessione rifiutata con homebrew


120

Uso homebrew per installare Redis ma quando provo a eseguire il ping di Redis mostra questo errore:

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

Nota: ho provato a disattivare il firewall e modificare il file di configurazione, ma non riesco ancora a eseguire il ping. Sto usando macOS Sierra e homebrew versione 1.1.11

Risposte:


281

Dopo l'installazione redis, digita da terminal:

redis-server

E verrà avviato Redis-Server


1
Tuttavia, come posso impedirgli di ascoltare quella porta / host?
Afolabi Olaoluwa Akinwumi,

@AfolabiOlaoluwaAkinwumi Si prega di fare riferimento Come posso smettere di redis-server
LuFFy

3
Per le finestre dal prompt dei comandi, cd C:\Program Files\Redisquindi redis-server
Pradeep Kumar Prabaharan

2
come eseguire redis-server continuamente in background, sto usando ubuntu @LuFFy
AATHITH RAJENDRAN

1
@AATHITHRAJENDRAN, controlla questa risposta , spero che ti sia d'aiuto
LuFFy

37

Ho trovato questa domanda mentre cercavo di capire perché non riuscivo a connettermi a redis dopo averlo avviato tramite brew services start redis.

tl; dr

A seconda di quanto è aggiornata la tua macchina o installazione, probabilmente manchi un file di configurazione o una directory per i valori predefiniti di redis.

  1. Hai bisogno di un file di configurazione in /usr/local/etc/redis.conf. Senza questo file redis-servernon si avvia. Puoi copiare il file di configurazione predefinito e modificarlo da lì con

    cp /usr/local/etc/redis.conf.default /usr/local/etc/redis.conf
    
  2. Devi /usr/local/var/db/redis/esistere. Puoi farlo facilmente con

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

Infine riavvia redis con brew services restart redis.

Come fai a scoprirlo !?

Ho perso un sacco di tempo cercando di capire se Redis non utilizzava i valori predefiniti tramite homebrew e su quale porta si trovava. I servizi erano fuorvianti perché, anche se redis-servernon erano stati effettivamente avviati, brew services listavrebbero comunque mostrato redis come "avviati". L'approccio migliore è usare brew services --verbose start redische ti mostrerà che il file di registro si trova in /usr/local/var/log/redis.log. Guardandoci dentro ho trovato le pistole fumanti

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

o

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

Per fortuna il registro ha reso ovvia la soluzione sopra.

Non posso semplicemente correre redis-server?

Certo che puoi. Richiederà solo un terminale o interromperà il tuo terminale di tanto in tanto se corri redis-server &. Inoltre metterà dump.rdbin qualunque directory tu lo esegua in ( pwd). Mi sono infastidito dover rimuovere il file o ignorarlo in git, quindi ho pensato che avrei lasciato che brew facesse il lavoro con i servizi.


grazie, questo ha risolto il mio problema su un progetto laravel in cui mi veniva rifiutata la connessione in abstractconnection.php linea 155
luckyguy73

Ho anche riscontrato un errore nella linea 155 di abstractconnection.php! Pazzo.
Kevin Gagnon

Iniziare con verboso ha fatto la cosa per me. Ho riscontrato un problema in redis.conf. Grazie
SangamAngre

18

Se dopo l'installazione è necessario eseguire redissempre, digita semplicemente il terminale:

redis-server &

L'esecuzione di redis utilizzando upstart su Ubuntu

Ho cercato di capire come configurare i sistemi da zero su Ubuntu. L'ho appena installato redissulla scatola ed ecco come l'ho fatto e alcune cose a cui prestare attenzione.

Installare:

sudo apt-get install redis-server

Ciò creerà un redisutente e installerà lo init.dscript per esso. Poiché upstartora è il sostituto per l'utilizzo di init.d, immagino che dovrei convertirlo per eseguirlo usando upstart.

Per disabilitare lo init.dscript predefinito per redis:

sudo update-rc.d redis-server disable

Quindi crea /etc/init/redis-server.confcon il seguente script:

description "redis server"

start on runlevel [23]
stop on shutdown

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

respawn

A cosa serve lo script per upstartsapere quale comando eseguire per avviare il processo. L'ultima riga dice anche upstartdi continuare a provare a rigenerarsi se muore.

Una cosa che ho dovuto cambiare in /etc/redis/redis.confè daemonize yesa daemonize no. Cosa succede se non lo si modifica, si redis-serveresegue il fork e si daemonizza da solo e il processo genitore scompare. Quando ciò accade, upstartpensa che il processo sia morto / interrotto e non avrai il controllo sul processo dall'interno upstart.

Ora puoi utilizzare i seguenti comandi per controllare redis-server:

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

Spero sia stato utile!


9

È il modo migliore per connettersi ai tuoi redis.

In un primo momento, controlla l'indirizzo IP del server redis in questo modo.

ps -ef | grep redis

Il risultato è una specie di "redis 1184 1 0 .... / usr / bin / redis-server 172.xxx:6379

E poi puoi connetterti a redis con l'opzione -h (hostname) come questa.

redis-cli -h 172.xxx


2

Nel mio caso, era la password che conteneva alcuni caratteri come ', dopo averla cambiata il server si è avviato senza problemi.


1

Ho avuto lo stesso problema perché avevo usato una sintassi impropria nel mio file di configurazione. Intendevo aggiungere:

maxmemory-policy allkeys-lru

al mio file di configurazione, ma invece solo aggiunto:

allkeys-lru

che evidentemente ha impedito a Redis di analizzare il file di configurazione, il che a sua volta mi ha impedito di connettermi tramite il cli. La correzione di questa sintassi mi ha permesso di connettermi a Redis.


1

Se quel problema con homebrew MacOSil problema era una sorta di autorizzazione mancante nella /usr/local/var/logdirectory, vedere il problema qui

Per risolverlo ho cancellato /usr/local/var/loge reinstallato redisbrew reinstall redis


1

Per prima cosa è necessario attivare / avviare tutti i nodi redis utilizzando il comando seguente, uno per uno per tutti i file di configurazione. @Nota: se stai configurando un cluster, dovresti avere 6 nodi, 3 saranno master e 3 saranno slave.redis-cli selezionerà automaticamente master e slave su 6 nodi usando il comando --cluster come mostrato nei miei comandi seguenti .

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

quindi corri

[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

l'output di cui sopra dovrebbe essere come:

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

2 ° modo per impostare automaticamente tutte le cose: puoi usare utils / create-cluster scripts per impostare ogni cosa per te come avviare tutti i nodi, creare un cluster che segui https://redis.io/topics/cluster-tutorial

Grazie


1

Questo lavoro per me:

sudo service redis-server start

1

Proprio come Aaron , nel mio caso brew services listsostenevo che Redis fosse in esecuzione, ma non lo era. Ho trovato le seguenti informazioni nel mio file di registro all'indirizzo /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

Ciò risulta essere causato dalla seguente configurazione:

bind 127.0.0.1 ::1 192.168.161.1

che era necessario per dare alla mia macchina virtuale VMWare Fusion l'accesso al server redis su macOS, l'host. Tuttavia, se la macchina virtuale non è stato avviato, questo fallimento vincolante causato Redis non avviare affatto . Quindi l'avvio della macchina virtuale ha risolto il problema.


1

Prova questo :

sudo service redis-server restart

Sto usando Windows WSL Ubuntu e continuo a ricevere errori nel mio terminale. npm ERR! codice ELIFECYCLE npm ERR! errno 1 Quindi ho provato tutto in alto, non funziona soprattutto in Windows. Ecco perché ho provato a riavviare il servizio redis su Ubuntu e funziona perfettamente! È tutto.
Jhune Carlo Trogelio
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.