Näin korjaat virheen: Redis-yhteys osoitteeseen 127.0.0.1:6379 epäonnistui

Pikavastaus: Jos sovelluksesi ilmoittaa virheestä Could not connect to Redis at 127.0.0.1:6379: Connection refused, aloita tarkistamalla, kuunteleeko Redis-palvelin todella kyseisessä osoitteessa ja portissa. Redis CLI käyttää oletuksena osoitetta 127.0.0.1 ja porttia 6379, joten yhteyden hylkäys viittaa yleensä pysäytettyyn palvelimeen, eri porttiin, kontin tai virtuaalikoneen verkkoasetusten ristiriitaan tai kuuntelija-asetusten ongelmaan. Todennusvirheet ovat erilaisia: ne tapahtuvat yleensä vasta sen jälkeen, kun TCP-yhteys on jo muodostettu.

Nopein diagnostiikkatoimenpide on komento redis-cli -h 127.0.0.1 -p 6379 PING. Jos se palauttaa PONG, Redis on saavutettavissa, ja sinun tulisi tarkistaa sovelluksesi Redis-URL, kirjautumistiedot, TLS-asetukset tai yhteyspoolin konfiguraatio sen sijaan, että käynnistäisit Redisin sokeasti uudelleen. Redis dokumentoi PING-komennon nimenomaan tavaksi testata, onko yhteys elossa ja pystyykö palvelin palvelemaan dataa. Katso virallinen Redis PING -komennon dokumentaatio.

Nopean diagnostiikan taulukko

Mitä näetYleisin tarkistettava alueEnsimmäinen toimenpide
Connection refusedEi kuuntelijaa kohdeisännällä/portissa, väärä päätepiste tai kontin verkkoasetusten ristiriitaSuorita redis-cli -h 127.0.0.1 -p 6379 PING
PONG Redis CLI:ssä, mutta sovellus epäonnistuu edelleenSovelluksen konfiguraatioVertaa sovelluksen isäntää, porttia, tietokantaa, TLS:ää, käyttäjätunnusta ja salasanaa toimivaan CLI-yhteyteen
NOAUTH tai WRONGPASSTodennus tai ACL:tAnna oikeat Redis-käyttäjätunnus/salasana; älä käsittele tätä portin kuunteluongelmana
TLS- tai varmennevirheProtokollan ristiriitaKäytä TLS-asetuksia ja rediss://, kun palvelin vaatii salattuja yhteyksiä
Toimii isäntäkoneella, mutta ei kontissaDocker-verkkoasetuksetLopeta 127.0.0.1:n käyttö, ellei Redis ole samassa kontissa; käytä oikeaa palvelu- tai isäntäosoitetta

1. Toista virhe sovelluksen ulkopuolella

Käytä Redis CLI:tä ennen sovelluskoodin muuttamista. Redisin virallinen CLI-dokumentaatio kertoo, että oletuksena redis-cli muodostaa yhteyden osoitteeseen 127.0.0.1:6379. Voit määrittää kohteen eksplisiittisesti:

redis-cli -h 127.0.0.1 -p 6379 PING

Toimivan paikallisen palvelimen tulisi vastata:

PONG

Jos saat saman yhteyden hylkäysviestin, olet toistanut ongelman siirtokerroksella. Tämä on hyödyllistä, koska se poistaa kehyksesi, ORM:n, välimuistikirjaston ja sovelluskoodin välittömästä tutkimuksesta. Redis CLI hyväksyy myös -h isännälle ja -p portille, kuten Redis CLI -viite kertoo.

PowerShell-esimerkki, jossa redis-cli muodostaa yhteyden osoitteeseen 127.0.0.1 portissa 6379 ja saa Connection refused -virheen
Esimerkki terminaalinäkymästä ensimmäisestä diagnostiikkatoimenpiteestä: eksplisiittinen Redis CLI PING osoitteeseen 127.0.0.1:6379 vahvistaa, ettei hylkäys rajoitu vain sovelluskoodiin.

Jos PING palauttaa jo PONG:n, siirry vaiheeseen 5. Älä käynnistä terveellistä Redis-instanssia jatkuvasti uudelleen; keskity sovelluksen yhteysmerkkijonoon ja suoritusympäristöön.

2. Varmista, että Redis-palvelin on käynnissä

Linux-järjestelmässä, joka on asennettu pakettienhallinnan kautta, Redis voidaan yleensä hallita järjestelmäpalveluna. Redisin Linux-asennusdokumentaatio näyttää komennot systemctl start ja systemctl stop, ja huomauttaa, että palvelun nimi voi olla redis tai redis-server alustasta riippuen. Tyypillinen Ubuntu/Debian-tarkistus on:

sudo systemctl status redis-server
sudo systemctl start redis-server
sudo systemctl status redis-server

Jos jakelusi käyttää palvelun nimenä redis:iä, korvaa nimi sillä. Jos systemd ei hallinnoi Redis-prosessiasi, käytä käynnistysmenetelmää, joka vastaa sitä, miten asensit Redisin, äläkä oleta palvelun olevan olemassa. Nykyinen Redis Linux -opas on saatavilla virallisessa Linux-asennusdokumentaatiossa.

Ubuntu-terminaalin esimerkki, jossa tarkistetaan redis-server systemctlillä, käynnistetään palvelu ja näytetään sen olevan aktiivinen ja käynnissä
Ubuntu/Debian systemd -esimerkki: tarkista Redis-palvelu, käynnistä se, jos se ei ole aktiivinen, ja varmista, että palvelu ilmoittaa aktiivisen käynnissä olevan tilan.

Huomio Windowsista ja WSL:stä

Älä oleta natiivin Windows Redis -palvelun olevan olemassa vain siksi, että sovelluksesi toimii Windowsissa. Redisin nykyinen asennusyleiskatsaus listaa Windowsin Docker-reitin alla, kun taas Redis ylläpitää myös Windows-oppaita WSL:lle ja sen Windows-yhteensopivuuskumppanille. Jos Redis toimii WSL:n sisällä, testaa sitä ensin samasta WSL-ympäristöstä. Jos Redis toimii Docker Desktopissa, käytä seuraavan osion Docker-tarkistuksia. Katso nykyinen Redis Open Source -asennusyleiskatsaus ja Redis Windows/WSL -asennusdokumentaatio.

3. Tarkista portti 6379 ja korjaa Docker-verkkoasetukset

Redis käyttää normaalisti TCP-porttia 6379. Jos Redis on käynnissä, mutta mikään ei kuuntele kyseisessä portissa, tarkista, onko palvelin käynnistetty eri konfiguraatiolla. Linuxissa nopea käyttöjärjestelmätarkistus kuten ss -ltnp voi näyttää kuuntelevat TCP-pistorasiat; Windowsissa PowerShellin Test-NetConnection 127.0.0.1 -Port 6379 voi auttaa erottamaan kuuntelevan portin hylätystä. Ratkaiseva testi on kuitenkin edelleen toimiva Redis-komento kuten PING.

Jos Redis toimii Dockerissa ja sovelluksesi isäntäkoneella

Kontin portti on julkaistava isäntäkoneelle. Redisin Docker-dokumentaatio näyttää isäntä-kontti-kartoituksen portille 6379. Paikalliseen kehitykseen voit sitoa julkaistun portin isäntäkoneen loopback-osoitteeseen:

docker run -d --name redis -p 127.0.0.1:6379:6379 redis
docker ps

Dockerin oma portin julkaisudokumentaatio selittää, että 127.0.0.1:n määrittäminen tekee julkaistusta portista saavutettavan vain Docker-isännältä, mikä on turvallisempaa paikalliselle kehitysvälimuistille kuin sen julkaiseminen kaikissa rajapinnoissa. Redisin virallinen Docker-pikaopas ja yhteysesimerkit ovat kohdassa Suorita Redis Open Source Dockerissa, ja isäntäosoitteen käyttäytyminen on kuvattu Dockerin portin julkaisudokumentaatiossa.

Docker-terminaalin esimerkki, jossa käynnistetään Redis-kontti isäntäportin 6379 kartoituksella kontin porttiin 6379 ja tarkistetaan kartoitus docker ps:llä
Docker-esimerkki isäntäsovelluksille: julkaise kontin portti 6379 osoitteeseen 127.0.0.1:6379, ja vahvista kartoitus docker ps:llä ennen Redisin testaamista.

Jos sovelluksesi toimii myös Dockerissa

Tämä on yleinen sekaannuksen lähde. Kontin sisällä 127.0.0.1 viittaa kyseiseen konttiin itseensä. Jos Redis on erillinen Compose-palvelu, muodosta yhteys Redis-palvelun nimeen, kuten redis:6379, jaetussa Compose-verkossa sen sijaan, että käyttäisit 127.0.0.1:6379:ää. Docker dokumentoi, että Compose-palvelut oletusverkossa ovat löydettävissä palvelun nimellä sen Compose-verkkodokumentaation mukaan.

Jos sovellus on Docker Desktop -kontissa, mutta Redis toimii suoraan isäntäkoneella, Docker suosittelee erityistä isäntänimeä host.docker.internal isäntäpalveluiden saavuttamiseksi. Tämä käyttäytyminen on dokumentoitu Docker Desktop -verkkoasetusten UKK:ssa.

4. Tarkista redis.conf: bind, suojattu tila ja portti

Jos prosessi on käynnissä mutta kuuntelee väärässä rajapinnassa tai portissa, tutki konfiguraatiotiedostoa, jota aktiivinen Redis-prosessi todella käyttää. Kolme asetusta ovat tärkeimpiä tämän virheen kannalta:

bind 127.0.0.1 -::1
protected-mode yes
port 6379

Virallinen Redis-konfiguraatiopohja käyttää loopback-sidontaa paikalliseen pääsyyn, ottaa suojatun tilan käyttöön oletuksena ja asettaa normaalin TCP-portin arvoon 6379. Se dokumentoi myös, että port 0 poistaa ei-TLS TCP-kuuntelijan käytöstä. Voit tutkia nykyistä pohjaa virallisessa Redis-tietovarastossa.

Redis-konfiguraatioesimerkki, jossa näkyy loopback-sidontaosoitteet, protected-mode yes, port 6379 ja onnistunut redis-cli PING, joka palauttaa PONG
Paikallisen kehityksen konfiguraatioesimerkki: Redis kuuntelee loopback-osoitteessa portissa 6379 suojatun tilan ollessa käytössä, jota seuraa onnistunut PING, joka palauttaa PONG.

Samalla isäntäkoneella olevassa kehitysympäristössä loopback-sidonta on asianmukainen. Lailliseen etä- tai moni-isäntäkäyttöönottoon älä ratkaise yhteyttä muuttamalla bind:iä kevyesti kaikkiin rajapintoihin ja kääntämällä protected-mode pois päältä. Redis varoittaa TCP-portin altistamisesta luottamattomille verkostoille. Käytä sen sijaan sopivaa verkkorajapintaa, palomuurikäytäntöä ja Redis-todennusta tai ACL:iä. Tarkista virallinen Redis-turvallisuusopas ennen verkkopääsyn laajentamista.

Konfiguraation muuttamisen jälkeen käynnistä Redis uudelleen käyttämällä samaa palvelunhallintaa, konttikomentoa tai prosessivalvojaa, joka omistaa käynnissä olevan instanssin. Toista sitten:

redis-cli -h 127.0.0.1 -p 6379 PING

5. Jos Redis vastaa, korjaa sovelluksen yhteysasetukset

Kun Redis CLI palauttaa PONG:n samasta suoritusympäristöstä kuin sovelluksesi, alkuperäinen yhteyden hylkäysongelma ei enää ole Redis-kuuntelijaongelma. Vertaa sovelluksen asetuksia onnistuneeseen testiin. Tarkista kaikki nämä arvot:

  • Isäntänimi tai IP-osoite
  • TCP-portti
  • Tietokantanumero, jos sovelluksesi valitsee ei-oletustietokannan
  • Käyttäjätunnus ja salasana, kun ACL-todennus on käytössä
  • Käyttääkö yhteys tavallista Redis:iä vai TLS:ää
  • Toimiiko sovellus isäntäkoneella, WSL:ssä, kontissa vai toisella koneella

Paikallinen, ei-TLS URL näyttää usein tältä:

redis://127.0.0.1:6379/0

Redis CLI tukee myös Redis-URI:ita ja dokumentoi rediss:// TLS:lle. Jos palvelin vaatii todennuksen, käytä asianmukaista käyttäjätunnusta ja salasanaa. CLI-testauksessa Redis suosittelee REDISCLI_AUTH-ympäristömuuttujan käyttöä sen sijaan, että laittaisit salasanan suoraan komentoriville. Katso Redis CLI -yhteysvaihtoehdot.

Älä sekoita todennus- ja TLS-virheitä yhteyden hylkäykseen

Jos viesti muuttuu muodosta Connection refused muotoon NOAUTH, WRONGPASS tai ACL-virhe, se on edistystä: asiakas saavutti Redis-palvelimen ja tarvitsee nyt kelvolliset kirjautumistiedot. Redis suosittelee ACL-pohjaista todennusta nykyaikaisiin käyttöönottoihin; virallinen Redis ACL -dokumentaatio selittää mallin.

Samoin, jos päätepiste vaatii TLS:ää, tavallinen TCP Redis -asiakas voi epäonnistua protokollan asennuksessa, vaikka portti olisi saavutettavissa. Redis CLI tukee --tls:ää, ja Redis-URI:t käyttävät rediss-schemaa TLS-yhteyksille. Palvelinpuolen TLS-tiedoista katso Redis TLS -dokumentaatio.

Ympäristökohtaiset yhteyskohteet

Missä Redis toimiiMissä sovellus toimiiTyypillinen kohdeTärkeä ehto
Samassa isäntäkoneessaSamassa isäntäkoneessa127.0.0.1:6379Redisin on kuunneltava loopback-portissa 6379
Docker-konttiIsäntäkäyttöjärjestelmä127.0.0.1:6379Julkaise kontin portti isäntäkoneelle
Docker Compose -palveluToinen palvelu samassa Compose-projektissaredis:6379 tai todellinen palvelunimesiMolempien palveluiden on jaettava relevantti Docker-verkko
IsäntäkäyttöjärjestelmäDocker Desktop -konttihost.docker.internal:6379Redisin on hyväksyttävä yhteys Docker-isäntäpolusta
EtäpalvelinToinen koneRedis-palvelimen saavutettavissa oleva isäntänimi/IP ja konfiguroitu porttiVerkkokäytäntö, bind-asetukset, todennus ja mahdollisesti TLS on sallittava pääsy

Nopea tarkistuslista

  • Suorita redis-cli -h 127.0.0.1 -p 6379 PING.
  • Jos hylätty, varmista, että Redis-prosessi tai -palvelu on käynnissä.
  • Varmista, että Redis todella kuuntelee portissa 6379, tai päivitä asiakas konfiguroituun porttiin.
  • Jos käytät Dockeria, varmista porttikartoitus ja onko asiakas isäntäkoneella vai toisessa kontissa.
  • Jos molemmat palvelut ovat Compose:ssa, käytä Redis-palvelun nimeä sen sijaan, että käyttäisit 127.0.0.1:ää.
  • Tarkista aktiivinen redis.conf asetuksille bind, protected-mode ja port.
  • Pidä Redis pois julkisesta internetistä; älä poista tietoturva-asetuksia käytöstä pelkästään virheen poistamiseksi.
  • Kun PING toimii, siirry sovelluksen kirjautumistietoihin, TLS:ään, URL:aan, tietokantanumeroon ja ympäristökohtaisiin verkkoasetuksiin.

Mikä yleensä korjaa tämän virheen?

Kehittäjän koneella yleisin onnistunut polku on yksinkertainen: käynnistä Redis, varmista, että se kuuntelee päätepisteessä, jota sovelluksesi todella käyttää, ja varmista sitten PING:llä. Docker muuttaa "localhostin" merkitystä, joten kontitetut sovellukset tarvitsevat usein palvelun nimen tai host.docker.internal:n sen sijaan, että käyttäisivät 127.0.0.1:ää. Konfiguraatiomuutosten tulisi olla viimeinen keino, ei ensimmäinen.

Tärkeä diagnostinen raja on, voidaanko TCP-yhteys muodostaa. Hylkäys tarkoittaa, että asiakas ei ole saavuttanut käyttökelpoista Redis-kuuntelijaa pyydetyssä päätepisteessä. Redis-virhe kuten NOAUTH tarkoittaa, että se on saavuttanut. Näiden kahden tapauksen käsitteleminen eri tavalla välttää tarpeettomat konfiguraatiomuutokset ja vie sinut todelliseen syytä paljon nopeammin.

Jätä kommentti

Kuinka korjata "ENOSPC: Järjestelmän raja tiedostojen tarkkailijoille saavutettu" Linuxissa

Kuinka korjata "ENOSPC: Järjestelmän raja tiedostojen tarkkailijoille saavutettu" Linuxissa

Korjaa Linux ENOSPC -tiedostojen tarkkailijan virheet tarkistamalla inotify-rajoitukset, etsimällä tarkkailijapainotteisia prosesseja, nostamalla rajoituksia turvallisesti ja tekemällä muutoksista pysyviä.

Kuinka korjata "Tailwind CSS Styles Not Update" -ongelma Vite React -sovelluksessa

Kuinka korjata "Tailwind CSS Styles Not Update" -ongelma Vite React -sovelluksessa

Korjaa Tailwind CSS -tyylien päivittymättömyys Vite Reactissa tarkistamalla Tailwind v4 -asetukset, CSS-tuonnit, lähteen tunnistus, dynaamiset luokat, HMR ja vanhentuneet välimuistit.

Kuinka korjata ModuleNotFoundError: Ei moduulia nimeltä 'pip' Python 3:ssa

Kuinka korjata ModuleNotFoundError: Ei moduulia nimeltä 'pip' Python 3:ssa

Korjaa Python 3:n ModuleNotFoundError-virhe pip-funktiolle Windowsissa, macOS:ssä ja Linuxissa ensurepip-komennolla, käyttöjärjestelmäpaketeilla, virtuaaliympäristöillä ja tulkkitarkistuksilla.

Kuinka korjata "Käyttöoikeus evätty (julkinen avain)" GitHub SSH:ssa

Kuinka korjata "Käyttöoikeus evätty (julkinen avain)" GitHub SSH:ssa

Korjaa GitHub SSH -käyttöoikeus evätty (julkinen avain) -ongelma tarkistamalla isäntä, aktiivinen SSH-avain, GitHub-tili, kertakirjautumisen valtuutus, etä-URL-osoite ja portin 22 käyttöoikeus.

Kuinka korjata "Git Push Rejected: Non-Fast-Forward" menettämättä muutoksia

Kuinka korjata "Git Push Rejected: Non-Fast-Forward" menettämättä muutoksia

Korjaa Gitin ei-pikakelausvirhe turvallisesti. Suojaa paikallinen työ, nouda etäcommitit, valitse yhdistäminen tai uudelleenpohjustaminen, ratkaise ristiriidat ja puske muutosten menettämättä.

Kuinka korjata "Nginx 502 Bad Gateway" -virhe, kun välityspalvelimena käytetään Node.js:ää

Kuinka korjata "Nginx 502 Bad Gateway" -virhe, kun välityspalvelimena käytetään Node.js:ää

Korjaa Nginx 502 Bad Gateway -virheet Node.js:n avulla ylävirran puolella tarkistamalla sovellusportti, NGINX-lokit, proxy_pass-osoite, säilöverkko, aikakatkaisut ja uudelleenlataus.

Kuinka korjata "Type 'null' ei ole määritettävissä tyypille" TypeScriptissä

Kuinka korjata "Type 'null' ei ole määritettävissä tyypille" TypeScriptissä

Korjaa TypeScriptin virhe ”Type 'null' ei ole määritettävissä tyypille” yhdistämistyypeillä, rajaamisella, oletusarvoilla ja turvallisilla väitteillä strictNullChecksin avulla.

Kuinka korjata "Prisma Client has not been generated yet" -virhe

Kuinka korjata "Prisma Client has not been generated yet" -virhe

Korjaa Prisma Clientin luontivirhe tarkistamalla generaattori, skeema, tulostepolku, importit, versiot, monorepo-asetukset ja käyttöönoton build-vaiheet.

Kuinka korjata "ERR_MODULE_NOT_FOUND" Node.js ESM -tuonneissa

Kuinka korjata "ERR_MODULE_NOT_FOUND" Node.js ESM -tuonneissa

Korjaa Node.js ERR_MODULE_NOT_FOUND ESM:ssä tarkistamalla tuontipolut, tiedostopäätteet, pakettien asennuksen, viennit, ESM-tilan ja puhtaat asennukset.

Kuinka korjata SSL-varmenneongelma: Paikallisen myöntäjän varmenteen haku epäonnistui Gitissä

Kuinka korjata SSL-varmenneongelma: Paikallisen myöntäjän varmenteen haku epäonnistui Gitissä

Korjaa Gitin virhe "paikallisen myöntäjän varmenteen haku epäonnistui" tunnistamalla luottamuksen taustajärjestelmä, asentamalla oikea CA-ketju ja pitämällä SSL-varmenteiden tarkistus päällä.