Hvernig á að laga Redis-tengivillu við 127.0.0.1:6379
Stutt svar: Ef forritið þitt gefur villuna Could not connect to Redis at 127.0.0.1:6379: Connection refused, byrjaðu á því að athuga hvort Redis-netþjónn sé í raun að hlusta á þessu netfangi og port. Redis CLI notar sjálfgefið 127.0.0.1 og port 6379, svo hafnun bendir yfirleitt til stöðvuðs netþjóns, annars ports, ósamræmis í Docker- eða sýndarvélanetkerfi, eða vandamáls í stillingum hlustara. Auðkenningarvillur eru annars eðlis: þær koma yfirleitt fram eftir að TCP-tenging hefur verið stofnuð.
Hraðasta greiningin er redis-cli -h 127.0.0.1 -p 6379 PING. Ef hún skilar PONG er Redis aðgengilegt og þú ættir að skoða Redis-URL, auðkenningarupplýsingar, TLS-stillingar eða tengipólstillingar forritsins í stað þess að endurræsa Redis blindlega. Redis skjalfestir PING sérstaklega sem aðferð til að prófa hvort tenging sé lifandi og hvort netþjónninn geti þjónað gögnum. Sjá opinbera Redis PING skipanaskjöl.
Hraðgreiningartafla
Það sem þú sérð
Líklegasta svæðið til að athuga
Fyrsta aðgerð
Connection refused
Enginn hlustari á marknetfangi/porti, rangt endapunktur eða ósamræmi í Docker-netkerfi
Keyrðu redis-cli -h 127.0.0.1 -p 6379 PING
PONG í Redis CLI en forritið mistekst enn
Stillingar forrits
Berðu saman hýsil, port, gagnagrunn, TLS, notandanafn og lykilorð forritsins við virka CLI-tengingu
NOAUTH eða WRONGPASS
Auðkenning eða ACL
Veittu rétt Redis notandanafn/lykilorð; meðhöndlaðu þetta ekki sem vandamál við port-hlustun
TLS eða vottorðsvilla
Samskiptamátaósamræmi
Notaðu TLS-stillingar og rediss:// þegar netþjónninn krefst dulkóðaðra tenginga
Virkar á hýsli en ekki í ílát
Docker-netkerfi
Hættu að nota 127.0.0.1 nema Redis sé í sama íláti; notaðu rétt þjónustu- eða hýsilnetfang
1. Endurskapaðu mistökin utan forritsins
Notaðu Redis CLI áður en þú breytir forritskóða. Opinber CLI skjöl Redis segja að redis-cli tengist sjálfgefið 127.0.0.1:6379. Þú getur gert markmiðið skýrt:
redis-cli -h 127.0.0.1 -p 6379 PING
Virkur staðbundinn netþjónn ætti að svara:
PONG
Ef þú færð sömu tengihafnunarskilaboð hefur þú endurskapað vandamálið á flutningslagi. Það er gagnlegt vegna þess að það útilokar rammaverkið þitt, ORM, skyndiminnasafn og forritskóða úr augnabliksrannsókninni. Redis CLI tekur einnig við -h fyrir hýsil og -p fyrir port, eins og skjalfest er í Redis CLI tilvísun.
Dæmi um terminal-sýn á fyrstu greiningu: skýr Redis CLI PING til 127.0.0.1:6379 staðfestir að hafnunin sé ekki takmörkuð við forritskóða.
Ef PING skilar nú þegar PONG, slepptu í skref 5. Ekki halda áfram að endurræsa heilbrigð Redis-tilvik; einbeittu þér að tengistreng forritsins og keyrsluumhverfinu.
2. Gakktu úr skugga um að Redis-netþjónninn sé keyrandi
Á Linux-kerfi sem er sett upp í gegnum pakkaumsjón er hægt að stjórna Redis oft sem kerfisþjónustu. Linux uppsetningarskjöl Redis sýna systemctl start og systemctl stop, en taka fram að þjónustuheitið getur verið redis eða redis-server eftir palli. Typísk Ubuntu/Debian athugun er:
sudo systemctl status redis-server
sudo systemctl start redis-server
sudo systemctl status redis-server
Ef dreifingin þín notar redis sem þjónustuheiti, skiptu um það heiti. Ef systemd stjórnar ekki Redis-ferlinu þínu, notaðu ræsingaraðferðina sem passar við hvernig þú settir upp Redis í stað þess að gera ráð fyrir að þjónusta sé til staðar. Núverandi Linux leiðbeiningar Redis eru fáanlegar í opinberum Linux uppsetningarskjölum.
Dæmi um Ubuntu/Debian systemd: athugaðu Redis-þjónustuna, ræstu hana ef hún er óvirk og staðfestu að þjónustan tilkynni virka keyrslustöðu.
Athugasemd um Windows og WSL
Gerðu ekki ráð fyrir að innbyggð Windows Redis-þjónusta sé til staðar bara vegna þess að forritið þitt keyrir á Windows. Núverandi uppsetningaryfirlit Redis listar Windows undir Docker-leiðinni, en Redis heldur einnig út Windows leiðbeiningum fyrir WSL og Windows samhæfingarpartnara þess. Ef Redis keyrir inni í WSL, prófaðu það fyrst frá sama WSL-umhverfi. Ef Redis keyrir í Docker Desktop, notaðu Docker-athuganirnar í næsta kafla. Sjá núverandi Redis Open Source uppsetningaryfirlit og Redis Windows/WSL uppsetningarskjöl.
3. Athugaðu port 6379 og lagaðu Docker-netkerfi
Redis notar venjulega TCP port 6379. Ef Redis keyrir en ekkert hlustar á það port, athugaðu hvort netþjónninn hafi verið ræstur með öðrum stillingum. Á Linux getur fljótleg stýrikerfisathugun eins og ss -ltnp sýnt hlustandi TCP-tengi; á Windows getur PowerShell Test-NetConnection 127.0.0.1 -Port 6379 hjálpað til við að greina á milli hlustandi ports og hafnaðs ports. Ákveðandi prófið er þó enn virk Redis skipun eins og PING.
Ef Redis keyrir í Docker og forritið þitt keyrir á hýslinum
Ílátið verður að birta portið til hýslisins. Docker skjöl Redis sýna hýsil-til-ílát kortlagningu fyrir port 6379. Fyrir eingöngu staðbundna þróun geturðu bundið birta port við hýslis loopback-netfang:
docker run -d --name redis -p 127.0.0.1:6379:6379 redis
docker ps
Eigin Docker skjöl um portbirtingu útskýra að tilgreining á 127.0.0.1 gerir birta port aðeins aðgengilegt frá Docker-hýslinum, sem er öruggara fyrir staðbundinn þróunarskyndiminni en að birta það á öllum viðmótum. Opinber Docker hraðbyrjun og tengidæmi Redis eru í Keyra Redis Open Source á Docker, og hegðun hýsilnetfangs er lýst í Docker skjölum um portbirtingu.
Docker dæmi fyrir hýslisforrit: birtu ílátspor 6379 á 127.0.0.1:6379, staðfestu síðan kortlagninguna með docker ps áður en þú prófar Redis.
Ef forritið þitt keyrir einnig í Docker
Þetta er algeng uppspretta ruglings. Innan í íláti vísar 127.0.0.1 til þess íláts sjálfs. Ef Redis er sérstök Compose-þjónusta, tengstu við Redis-þjónustuheitið, eins og redis:6379, á sameiginlegu Compose-netinu í stað 127.0.0.1:6379. Docker skjalfestir að Compose-þjónustur á sjálfgefna netinu séu uppgötvanlegar með þjónustuheiti í Compose netkerfisleiðbeiningum.
Ef forritið er í Docker Desktop íláti en Redis keyrir beint á hýslinum, mælir Docker með sérstaka hýsilheitinu host.docker.internal til að ná í hýslisþjónustur. Sú hegðun er skjalfest í Docker Desktop netkerfis FAQ.
4. Staðfestu redis.conf: bind, protected mode og port
Ef ferlið keyrir en hlustar á rangt viðmót eða port, skoðaðu stillingaskrána sem virka Redis-ferlið notar í raun. Þrjár stillingar skipta mestu máli fyrir þessa villu:
bind 127.0.0.1 -::1
protected-mode yes
port 6379
Opinber Redis stillingasniðmát notar loopback-bindingu fyrir staðbundna aðgang, virkjar protected mode sjálfgefið og setur venjulega TCP port á 6379. Það skjalfestir einnig að port 0 slökkvi á non-TLS TCP hlustaranum. Þú getur skoðað núverandi sniðmát í opinbera Redis geymslunni.
Dæmi um stillingu fyrir staðbundna þróun: Redis hlustar á loopback á port 6379 með protected mode virkt, fylgt eftir af virkum PING sem skilar PONG.
Fyrir þróunarumhverfi á sama hýsli er loopback-binding viðeigandi. Fyrir lögmæta fjarlægja eða marg-hýsla útfærslu, leystu ekki tengingarvandamál með því að breyta bind í öll viðmót og slökkva á protected-mode af handahófi. Redis varar við því að birta TCP port sitt fyrir ótraust net. Notaðu viðeigandi netviðmót, eldveggjarstefnu og Redis auðkenningu eða ACL í staðinn. Farðu yfir opinberar Redis öryggisleiðbeiningar áður en þú víkkar netaðgang.
Eftir að hafa breytt stillingunum, endurræstu Redis með því að nota sama þjónustustjóra, ílátsskipun eða ferlisstjóra sem á keyrandi dæmið. Endurtaktu síðan:
redis-cli -h 127.0.0.1 -p 6379 PING
5. Ef Redis svarar, lagaðu tengistillingar forritsins
Þegar Redis CLI skilar PONG frá sama keyrsluumhverfi og forritið þitt, er upprunalega tengihafnunin ekki lengur vandamál við Redis-hlustara. Berðu stillingar forritsins saman við virka prófun. Athugaðu öll þessi gildi:
Hýsilheiti eða IP-netfang
TCP port
Gagnagrunnsnúmer, ef forritið þitt velur ekki sjálfgefinn gagnagrunn
Notandanafn og lykilorð þegar ACL auðkenning er virk
Hvort tengingin noti hreint Redis eða TLS
Hvort forritið keyri á hýslinum, í WSL, í íláti eða á annarri vél
Staðbundið, non-TLS URL lítur oft svona út:
redis://127.0.0.1:6379/0
Redis CLI styður einnig Redis URIs og skjalfestir rediss:// fyrir TLS. Ef netþjónninn krefst auðkenningar, notaðu viðeigandi notandanafn og lykilorð. Fyrir CLI prófanir mælir Redis með REDISCLI_AUTH umhverfisbreytunni í stað þess að setja lykilorð beint á skipanalínu. Sjá Redis CLI tengimöguleika.
Blandu ekki saman auðkenningar- og TLS-villum við tengihafnun
Ef skilaboðin breytast úr Connection refused í NOAUTH, WRONGPASS eða ACL villu, er það framför: biðlarinn náði til Redis-netþjónsins og þarf nú gild auðkenningarupplýsingar. Redis mælir með ACL-grunninni auðkenningu fyrir nútíma útfærslur; opinber Redis ACL skjöl útskýra líkanið.
Eins, ef endapunkturinn krefst TLS, getur hreinn TCP Redis-biðlarinn mistekist við samskiptamótun þótt port sé aðgengilegt. Redis CLI styður --tls, og Redis URIs nota rediss skema fyrir TLS-tengingar. Fyrir netþjónshliðar TLS upplýsingar, sjá Redis TLS skjöl.
Umhverfisspecifik tengimarkmið
Hvar Redis keyrir
Hvar forritið keyrir
Typískt markmið
Lykilskilyrði
Sami hýsill
Sami hýsill
127.0.0.1:6379
Redis verður að hlusta á loopback port 6379
Docker ílát
Hýslisstýrikerfi
127.0.0.1:6379
Birtu ílátspor til hýslis
Docker Compose þjónusta
Önnur þjónusta í sama Compose verkefni
redis:6379 eða þitt raunverulega þjónustuheiti
Báðar þjónusturnar verða að deila viðeigandi Docker-neti
Hýslisstýrikerfi
Docker Desktop ílát
host.docker.internal:6379
Redis verður að samþykkja tengingu frá Docker-hýslisleið
Fjarlægur netþjónn
Önnur vél
Aðgengilegt hýsilheiti/IP og stillt port Redis-netþjónsins
Netstefna, bind stillingar, auðkenning og mögulega TLS verða að leyfa aðgang
Hraðpróflisti
Keyrðu redis-cli -h 127.0.0.1 -p 6379 PING.
Ef hafnað, staðfestu að Redis ferlið eða þjónustan sé keyrandi.
Staðfestu að Redis hlusti í raun á port 6379, eða uppfærðu biðlarann í stillta port.
Ef þú notar Docker, staðfestu portkortlagninguna og hvort biðlarinn sé á hýslinum eða í öðru íláti.
Ef báðar þjónusturnar eru í Compose, notaðu Redis-þjónustuheitið í stað 127.0.0.1.
Athugaðu virka redis.conf fyrir bind, protected-mode og port.
Haltu Redis utan almenningssins; slökktu ekki á öryggisstillingum bara til að láta villuna hverfa.
Þegar PING virkar, farðu yfir auðkenningarupplýsingar forrits, TLS, URL, gagnagrunnsnúmer og umhverfisspecifik netkerfi.
Hvað lagar yfirleitt þessa villu?
Fyrir þróunarvél er algengasta árangursríka leiðin einföld: ræstu Redis, vertu viss um að hann hlusti á endapunktinn sem forritið þitt notar í raun, og staðfestu síðan með PING. Docker breytir merkingu „localhost“, svo ílátuð forrit þurfa oft þjónustuheiti eða host.docker.internal í stað 127.0.0.1. Stillingarbreytingar ættu að vera síðasta úrræði, ekki fyrsta.
Lykilgreiningin er hvort hægt sé að stofna TCP-tengingu. Hafnun þýðir að biðlarinn hefur ekki náð til nothæfs Redis-hlustara á óskaða endapunktinum. Redis villa eins og NOAUTH þýðir að hann hefur. Meðhöndlun þessara tveggja tilvika á mismunandi hátt forðast óþarfa stillingarbreytingar og leiðir þig að raunverulegri orsök mun hraðar.