Nie można połączyć się z Redis pod adresem 127.0.0.1:6379: Odmowa połączenia z homebrew

120

Używam homebrew do zainstalowania Redis, ale kiedy próbuję pingować Redis, pokazuje ten błąd:

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

Uwaga: próbowałem wyłączyć zaporę i edytować plik konfiguracyjny, ale nadal nie mogę pingować. Używam macOS Sierra i homebrew w wersji 1.1.11

bufei
źródło

Odpowiedzi:

282

Po zainstalowaniu rediswpisz z terminal:

redis-server

I zostanie uruchomiony Redis-Server

LuFFy
źródło
1
Jednak jak mogę zatrzymać nasłuchiwanie tego portu / hosta?
Afolabi Olaoluwa Akinwumi
@AfolabiOlaoluwaAkinwumi Proszę odnieść się Jak mogę zatrzymać serwer
redis
3
W przypadku okien z wiersza polecenia, cd C:\Program Files\Redisa następnie redis-server
Pradeep Kumar Prabaharan,
2
jak uruchomić redis-server w tle, używam ubuntu @LuFFy
AATHITH RAJENDRAN
1
@AATHITHRAJENDRAN, Sprawdź tę odpowiedź , mam nadzieję, że to pomoże
LuFFy
37

Znalazłem to pytanie, próbując dowiedzieć się, dlaczego nie mogłem połączyć się z redisem po uruchomieniu go przez brew services start redis.

tl; dr

W zależności od tego, jak świeży jest twój komputer lub instalacja, prawdopodobnie brakuje pliku konfiguracyjnego lub katalogu dla domyślnych ustawień redis.

  1. Potrzebujesz pliku konfiguracyjnego w /usr/local/etc/redis.conf. Bez tego pliku redis-servernie wystartuje. Możesz skopiować domyślny plik konfiguracyjny i zmodyfikować go stamtąd za pomocą

    cp /usr/local/etc/redis.conf.default /usr/local/etc/redis.conf
    
  2. Musisz /usr/local/var/db/redis/istnieć. Możesz to łatwo zrobić za pomocą

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

Wreszcie po prostu uruchom ponownie redis z brew services restart redis.

Jak się tego dowiedziałeś !?

Zmarnowałem dużo czasu, próbując dowiedzieć się, czy redis nie używa domyślnych ustawień przez homebrew i na jakim porcie się znajduje. Usługi wprowadzały w błąd, ponieważ mimo że w redis-serverrzeczywistości nie zostały uruchomione, brew services listnadal wyświetlałyby redis jako „rozpoczęte”. Najlepszym podejściem jest użycie, brew services --verbose start redisktóre pokaże, że plik dziennika jest pod adresem /usr/local/var/log/redis.log. Patrząc tam, znalazłem dymiący pistolet (y)

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

lub

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

Na szczęście w dzienniku powyższe rozwiązanie było oczywiste.

Nie mogę po prostu biec redis-server ?

Pewnie, że możesz. Po prostu zajmie terminal lub od czasu do czasu przerwie twój terminal, jeśli uruchomisz redis-server &. Umieści również dump.rdbw dowolnym katalogu, w którym go uruchomisz ( pwd). Zdenerwowałem się, że muszę usunąć plik lub zignorować go w git, więc pomyślałem, że pozwolę brew na pracę z usługami.

Aaron
źródło
dzięki, to rozwiązało mój problem w projekcie laravel, w którym odmówiono mi połączenia w linii 155 abstractconnection.php
luckyguy73
Miałem też błąd w linii 155 abstractconnection.php! Zwariowany.
Kevin Gagnon
Zacznij od szczegółowego, który zrobił to za mnie. Miałem problem w redis.conf. Dzięki
SangamAngre
18

Jeśli po instalacji musisz działać redisprzez cały czas, po prostu wpisz terminal:

redis-server &

Uruchamianie redis przy użyciu upstart w systemie Ubuntu

Próbowałem zrozumieć, jak skonfigurować systemy od podstaw na Ubuntu. Właśnie zainstalowałem redisna pudełku i oto jak to zrobiłem i kilka rzeczy, na które należy zwrócić uwagę.

Żeby zainstalować:

sudo apt-get install redis-server

Spowoduje to utworzenie redisużytkownika i zainstalowanie init.ddla niego skryptu. Ponieważ upstartjest to teraz zamiennik dla używania init.d, myślę, że powinienem go przekonwertować do uruchamiania przy użyciu upstart.

Aby wyłączyć domyślny init.dskrypt dla redis:

sudo update-rc.d redis-server disable

Następnie utwórz /etc/init/redis-server.confza pomocą następującego skryptu:

description "redis server"

start on runlevel [23]
stop on shutdown

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

respawn

Do czego służy skrypt, upstartaby wiedzieć, jakie polecenie uruchomić, aby rozpocząć proces. Ostatnia linia mówi również, upstartaby próbować odrodzić się, jeśli zginie.

Jedną z rzeczy, musiałem zmienić w /etc/redis/redis.confto daemonize yes, aby daemonize no. Co się stanie, jeśli tego nie zmienisz, redis-serverrozwidli się i daemonizuje, a proces nadrzędny znika. Kiedy tak się dzieje, upstartmyśli, że proces zakończył się / zatrzymał i nie będziesz mieć kontroli nad procesem od wewnątrz upstart.

Teraz możesz używać następujących poleceń do sterowania redis-server:

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

Mam nadzieję, że to było pomocne!

moim słońcem
źródło
9

To lepszy sposób na połączenie się z redis.

Najpierw sprawdź w ten sposób adres IP serwera redis.

ps -ef | grep redis

Wynik to rodzaj „redis 1184 1 0 .... / usr / bin / redis-server 172.xxx:6379

Następnie możesz połączyć się z redis za pomocą opcji -h (nazwa hosta) w ten sposób.

redis-cli -h 172.xxx

jihyun
źródło
2

W moim przypadku to hasło zawierało kilka znaków, np. 'Po jego zmianie serwer startował bez problemów.

Talu
źródło
2

Ta praca dla mnie:

sudo service redis-server start
zahra
źródło
zapomniałem uruchomić serwer redis. Dziękuję Ci.
Mark Anthony
1

Po prostu miałem ten sam problem, ponieważ użyłem niewłaściwej składni w moim pliku konfiguracyjnym. Chciałem dodać:

maxmemory-policy allkeys-lru

do mojego pliku konfiguracyjnego, ale zamiast tego dodano tylko:

allkeys-lru

co ewidentnie uniemożliwiło Redis przeanalizowanie pliku konfiguracyjnego, co z kolei uniemożliwiło mi połączenie się przez CLI. Naprawienie tej składni pozwoliło mi połączyć się z Redis.

duhaime
źródło
1

Gdyby ten problem z homebrew MacOSproblemem polegał na braku uprawnień w /usr/local/var/logkatalogu, patrz problem tutaj

Aby go rozwiązać, /usr/local/var/logusunąłem i ponownie zainstalowałem redisbrew reinstall redis

zetacu
źródło
1

Najpierw musisz uruchomić / uruchomić wszystkie węzły redis za pomocą poniższego polecenia, jeden po drugim dla wszystkich plików conf. @ Uwaga: jeśli konfigurujesz klaster, powinieneś mieć 6 węzłów, 3 będą nadrzędne, a 3 podrzędne. Redis-cli automatycznie wybierze nadrzędny i podrzędny z 6 węzłów za pomocą polecenia --cluster, jak pokazano w moich poniższych poleceniach .

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

następnie uruchomić

[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

wyjście powyższego powinno wyglądać następująco:

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

Drugi sposób na automatyczną konfigurację wszystkich rzeczy: możesz użyć narzędzi / skryptów tworzenia klastra, aby skonfigurować wszystko dla siebie, na przykład uruchamianie wszystkich węzłów, tworzenie klastra, który będziesz obserwować https://redis.io/topics/cluster-tutorial

Dzięki

Sanjay
źródło
1

Tak jak Aaron , w moim przypadku brew services listtwierdził, że redis działa, ale tak nie było. Znalazłem następujące informacje w moim pliku dziennika pod adresem /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

Okazuje się, że jest to spowodowane następującą konfiguracją:

bind 127.0.0.1 ::1 192.168.161.1

co było konieczne, aby moja maszyna wirtualna VMWare Fusion miała dostęp do serwera redis w systemie macOS, który jest hostem. Jednakże, jeżeli maszyna wirtualna nie została uruchomiona, awaria spowodowana wiązania Redis nie uruchamia się w ogóle . Uruchomienie maszyny wirtualnej rozwiązało problem.

Glorfindel
źródło
1

Spróbuj tego :

sudo service redis-server restart
Jhune Carlo Trogelio
źródło
Używam systemu Windows WSL Ubuntu i ciągle pojawiają się błędy w moim terminalu. npm ERR! kod ELIFECYCLE npm ERR! errno 1 Więc wypróbowałem wszystko na górze, nie działa to szczególnie w Windows. Dlatego spróbowałem ponownie uruchomić usługę redis na Ubuntu i działa idealnie! To wszystko.
Jhune Carlo Trogelio