Kā novērst Redis savienojuma kļūdu ar 127.0.0.1:6379

Īsā atbilde: ja jūsu lietojumprogramma ziņo par kļūdu Could not connect to Redis at 127.0.0.1:6379: Connection refused, sāciet ar pārbaudi, vai Redis serveris tiešām klausās šajā adresē un portā. Redis CLI pēc noklusējuma izmanto 127.0.0.1 un portu 6379, tāpēc atteice parasti norāda uz apturētu serveri, citu portu, konteinera vai virtuālās mašīnas tīkla nesakritību vai klausītāja konfigurācijas problēmu. Autentifikācijas kļūdas ir atšķirīgas: tās parasti rodas pēc tam, kad TCP savienojums jau ir izveidots.

Ātrākā diagnostika ir komanda redis-cli -h 127.0.0.1 -p 6379 PING. Ja tā atgriež PONG, Redis ir sasniedzams, un jums jāpārbauda lietojumprogrammas Redis URL, akreditācijas dati, TLS iestatījumi vai savienojuma kopas konfigurācija, nevis aklai jāpārstartē Redis. Redis dokumentācija īpaši norāda PING kā veidu, kā pārbaudīt, vai savienojums ir dzīvs un vai serveris var apkalpot datus. Skatiet oficiālo Redis PING komandas dokumentāciju.

Ātrās diagnostikas tabula

Ko jūs redzatVisticamākā pārbaudes jomaPirmā darbība
Connection refusedNav klausītāja mērķa resursdatorā/portā, nepareizs galapunkts vai konteinera tīkla nesakritībaPalaist redis-cli -h 127.0.0.1 -p 6379 PING
PONG Redis CLI, bet lietojumprogramma joprojām neizdodasLietojumprogrammas konfigurācijaSalīdziniet lietojumprogrammas resursdatoru, portu, datubāzi, TLS, lietotājvārdu un paroli ar veiksmīgo CLI savienojumu
NOAUTH vai WRONGPASSAutentifikācija vai ACLNorādiet pareizo Redis lietotāju/paroli; neuztveriet to kā porta klausīšanās problēmu
TLS vai sertifikāta kļūdaProtokola nesakritībaIzmantojiet TLS iestatījumus un rediss://, ja serveris pieprasa šifrētus savienojumus
Darbojas resursdatorā, bet ne konteinerāDocker tīklsNelietojiet 127.0.0.1, ja vien Redis neatrodas tajā pašā konteinerā; izmantojiet pareizo servisa vai resursdatora adresi

1. Atkārtojiet kļūmi ārpus jūsu lietojumprogrammas

Izmantojiet Redis CLI, pirms maināt lietojumprogrammas kodu. Redis oficiālā CLI dokumentācija norāda, ka pēc noklusējuma redis-cli izveido savienojumu ar 127.0.0.1:6379. Jūs varat padarīt mērķi skaidru:

redis-cli -h 127.0.0.1 -p 6379 PING

Veiksmīgam lokālam serverim jāatbild:

PONG

Ja saņemat to pašu savienojuma atteices ziņojumu, esat atkārtojis problēmu transporta līmenī. Tas ir noderīgi, jo tas izslēdz jūsu ietvaru, ORM, kešatmiņas bibliotēku un lietojumprogrammas kodu no tūlītējas izmeklēšanas. Redis CLI arī pieņem -h resursdatoram un -p portam, kā dokumentēts Redis CLI atsauces dokumentācijā.

PowerShell piemērs, kurā redzams redis-cli, kas izveido savienojumu ar 127.0.0.1 portā 6379 un saņem Connection refused kļūdu
Piemērs termināla skatam par pirmo diagnostiku: eksplicīts Redis CLI PING uz 127.0.0.1:6379 apstiprina, ka atteice nav ierobežota tikai ar lietojumprogrammas kodu.

Ja PING jau atgriež PONG, dodieties uz 5. soli. Nepārtrauciet vesela Redis instances pārstartēšanu; koncentrējieties uz lietojumprogrammas savienojuma virkni un izpildes vidi.

2. Pārliecinieties, ka Redis serveris darbojas

Linux sistēmā, kas instalēta, izmantojot pakotņu pārvaldnieku, Redis parasti var kontrolēt kā sistēmas servisu. Redis Linux instalācijas dokumentācija parāda systemctl start un systemctl stop, norādot, ka servisa nosaukums var būt redis vai redis-server atkarībā no platformas. Tipiska Ubuntu/Debian pārbaude ir:

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

Ja jūsu distribūcija izmanto redis kā servisa nosaukumu, aizstājiet ar šo nosaukumu. Ja systemd nepārvalda jūsu Redis procesu, izmantojiet starta metodi, kas atbilst tam, kā instalējāt Redis, nevis pieņemiet, ka serviss eksistē. Pašreizējās Redis Linux vadlīnijas ir pieejamas oficiālajā Linux instalācijas dokumentācijā.

Ubuntu termināla piemērs, kurā pārbauda redis-server ar systemctl, startē servisu un parāda to kā aktīvu un darbojošos
Ubuntu/Debian systemd piemērs: pārbaudiet Redis servisu, startējiet to, ja tas nav aktīvs, un pārliecinieties, ka serviss ziņo par aktīvu darbības stāvokli.

Piezīme par Windows un WSL

Nepieņemiet, ka eksistē natīvs Windows Redis serviss tikai tāpēc, ka jūsu lietojumprogramma darbojas Windows. Redis pašreizējā instalācijas pārskatā Windows ir norādīts Docker ceļā, savukārt Redis uztur arī Windows vadlīnijas WSL un tā Windows saderības partnerim. Ja Redis darbojas WSL iekšienē, vispirms testējiet to tajā pašā WSL vidē. Ja Redis darbojas Docker Desktop, izmantojiet Docker pārbaudes nākamajā sadaļā. Skatiet pašreizējo Redis Open Source instalācijas pārskatu un Redis Windows/WSL instalācijas dokumentāciju.

3. Pārbaudiet portu 6379 un novērsiet Docker tīkla problēmas

Redis parasti izmanto TCP portu 6379. Ja Redis darbojas, bet nekas neklausās šajā portā, pārbaudiet, vai serveris netika startēts ar citu konfigurāciju. Linux sistēmā ātra operētājsistēmas pārbaude, piemēram, ss -ltnp, var parādīt klausīšanos TCP ligzdas; Windows sistēmā PowerShell Test-NetConnection 127.0.0.1 -Port 6379 var palīdzēt atšķirt klausīšanos portu no atteikta. Noteicošais tests tomēr joprojām ir darbojošās Redis komandas, piemēram, PING, izmantošana.

Ja Redis darbojas Docker un jūsu lietojumprogramma darbojas resursdatorā

Konteinera ports ir jāpublicē resursdatorā. Redis Docker dokumentācija parāda resursdatora un konteinera kartējumu portam 6379. Lokālai izstrādei jūs varat piesaistīt publicēto portu resursdatora cilpas adresi:

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

Docker paša porta publicēšanas dokumentācija skaidro, ka 127.0.0.1 norādīšana padara publicēto portu sasniedzamu tikai no Docker resursdatora, kas ir drošāk lokālai izstrādes kešatmiņai nekā publicēšana visās saskarnēs. Redis oficiālais Docker ātrais sākums un savienojumu piemēri ir pieejami Redis Open Source palaišana Docker, un resursdatora adreses uzvedība ir aprakstīta Docker porta publicēšanas dokumentācijā.

Docker termināla piemērs, kurā startē Redis konteineru ar resursdatora portu 6379, kas kartēts uz konteinera portu 6379, un pārbauda kartējumu ar docker ps
Docker piemērs resursdatora lietojumprogrammām: publicējiet konteinera portu 6379 uz 127.0.0.1:6379, pēc tam apstipriniet kartējumu ar docker ps, pirms testējat Redis.

Ja jūsu lietojumprogramma arī darbojas Docker

Tas ir biežs neskaidrību avots. Konteinera iekšienē 127.0.0.1 attiecas uz pašu konteineru. Ja Redis ir atsevišķs Compose serviss, izveidojiet savienojumu ar Redis servisa nosaukumu, piemēram, redis:6379, kopīgajā Compose tīklā, nevis 127.0.0.1:6379. Docker dokumentē, ka Compose servisi noklusējuma tīklā ir atrodami pēc servisa nosaukuma tā Compose tīkla ceļvedī.

Ja lietojumprogramma atrodas Docker Desktop konteinerā, bet Redis darbojas tieši resursdatorā, Docker iesaka īpašo resursdatora nosaukumu host.docker.internal, lai sasniegtu resursdatora servisus. Šī uzvedība ir dokumentēta Docker Desktop tīkla BUJ.

4. Pārbaudiet redis.conf: bind, aizsargāto režīmu un portu

Ja process darbojas, bet klausās nepareizā saskarnē vai portā, pārbaudiet konfigurācijas failu, ko faktiski izmanto aktīvais Redis process. Trīs iestatījumi ir vissvarīgākie šai kļūdai:

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

Oficiālajā Redis konfigurācijas veidnē tiek izmantota cilpas piesaiste lokālai piekļuvei, pēc noklusējuma ir iespējots aizsargātais režīms un parastais TCP ports ir iestatīts uz 6379. Tajā arī dokumentēts, ka port 0 atspējo ne-TLS TCP klausītāju. Jūs varat apskatīt pašreizējo veidni oficiālajā Redis repozitorijā.

Redis konfigurācijas piemērs, kurā redzamas cilpas piesaistes adreses, protected-mode yes, port 6379 un veiksmīgs redis-cli PING, kas atgriež PONG
Lokālas izstrādes konfigurācijas piemērs: Redis klausās cilpā portā 6379 ar iespējotu aizsargāto režīmu, kam seko veiksmīgs PING, kas atgriež PONG.

Lokālai izstrādes iestatīšanai tajā pašā resursdatorā cilpas piesaiste ir piemērota. Likumīgai attālinātai vai vairāku resursdatoru izvēršanai neatrisiniet savienojamību, vieglprātīgi mainot bind uz visām saskarnēm un izslēdzot protected-mode. Redis brīdina pret tā TCP porta atklāšanu neuzticamiem tīkliem. Tā vietā izmantojiet atbilstošu tīkla saskarni, ugunsmūra politiku un Redis autentifikāciju vai ACL. Pirms paplašināt tīkla piekļuvi, pārskatiet oficiālās Redis drošības vadlīnijas.

Pēc konfigurācijas maiņas pārstartējiet Redis, izmantojot to pašu servisa pārvaldnieku, konteinera komandu vai procesa uzraugu, kas pārvalda darbojošos instanci. Pēc tam atkārtojiet:

redis-cli -h 127.0.0.1 -p 6379 PING

5. Ja Redis atbild, novērsiet lietojumprogrammas savienojuma iestatījumus

Kad Redis CLI atgriež PONG no tās pašas izpildes vides kā jūsu lietojumprogramma, sākotnējā savienojuma atteices problēma vairs nav Redis klausītāja problēma. Salīdziniet lietojumprogrammas iestatījumus ar veiksmīgo testu. Pārbaudiet visas šīs vērtības:

  • Resursdatora nosaukums vai IP adrese
  • TCP ports
  • Datubāzes numurs, ja jūsu lietojumprogramma izvēlas noklusējuma neatbilstošu datubāzi
  • Lietotājvārds un parole, ja ir iespējota ACL autentifikācija
  • Vai savienojums izmanto parasto Redis vai TLS
  • Vai lietojumprogramma darbojas resursdatorā, WSL, konteinerā vai citā mašīnā

Lokāla, ne-TLS URL bieži izskatās šādi:

redis://127.0.0.1:6379/0

Redis CLI atbalsta arī Redis URI un dokumentē rediss:// TLS. Ja serveris pieprasa autentifikāciju, izmantojiet atbilstošo lietotājvārdu un paroli. CLI testēšanai Redis iesaka izmantot REDISCLI_AUTH vides mainīgo, nevis ievietot paroli tieši komandrindā. Skatiet Redis CLI savienojuma opcijas.

Nesajauciet autentifikācijas un TLS kļūmes ar savienojuma atteici

Ja ziņojums mainās no Connection refused uz NOAUTH, WRONGPASS vai ACL kļūdu, tas ir progress: klients sasniedza Redis serveri un tagad tam ir nepieciešami derīgi akreditācijas dati. Redis iesaka ACL balstītu autentifikāciju mūsdienu izvēršanām; oficiālā Redis ACL dokumentācija izskaidro modeli.

Tāpat, ja galapunkts pieprasa TLS, parasts TCP Redis klients var neizdoties protokola iestatīšanas laikā, pat ja ports ir sasniedzams. Redis CLI atbalsta --tls, un Redis URI izmanto rediss shēmu TLS savienojumiem. Servera puses TLS detaļām skatiet Redis TLS dokumentāciju.

Videi specifiski savienojuma mērķi

Kur darbojas RedisKur darbojas lietojumprogrammaTipisks mērķisGalvenais nosacījums
Tas pats resursdatorsTas pats resursdators127.0.0.1:6379Redis ir jāklausās cilpas portā 6379
Docker konteinersResursdatora OS127.0.0.1:6379Publicējiet konteinera portu resursdatorā
Docker Compose servissCits serviss tajā pašā Compose projektāredis:6379 vai jūsu faktiskais servisa nosaukumsAbiem servisiem ir jādala attiecīgais Docker tīkls
Resursdatora OSDocker Desktop konteinershost.docker.internal:6379Redis ir jāpieņem savienojums no Docker resursdatora ceļa
Attālināts serverisCita mašīnaRedis servera sasniedzamais resursdatora nosaukums/IP un konfigurētais portsTīkla politikai, bind iestatījumiem, autentifikācijai un, iespējams, TLS ir jāatļauj piekļuve

Ātra pārbaudes saraksts

  • Palaist redis-cli -h 127.0.0.1 -p 6379 PING.
  • Ja atteikts, pārliecinieties, ka Redis process vai serviss darbojas.
  • Pārliecinieties, ka Redis tiešām klausās portā 6379, vai atjauniniet klientu uz konfigurēto portu.
  • Ja izmantojat Docker, pārbaudiet porta kartējumu un to, vai klients atrodas resursdatorā vai citā konteinerā.
  • Ja abi servisi ir Compose, izmantojiet Redis servisa nosaukumu, nevis 127.0.0.1.
  • Pārbaudiet aktīvo redis.conf attiecībā uz bind, protected-mode un port.
  • Nepubliskojiet Redis publiskajā internetā; neizslēdziet drošības iestatījumus tikai tāpēc, lai kļūda pazustu.
  • Kad PING darbojas, pārejiet uz lietojumprogrammas akreditācijas datiem, TLS, URL, datubāzes numuru un videi specifisku tīklošanu.

Kas parasti novērš šo kļūdu?

Izstrādātāja mašīnai visbiežāk veiksmīgais ceļš ir vienkāršs: startējiet Redis, pārliecinieties, ka tas klausās galapunktā, ko jūsu lietojumprogramma faktiski izmanto, un pēc tam pārbaudiet ar PING. Docker maina “localhost” nozīmi, tāpēc konteinerizētām lietojumprogrammām bieži ir nepieciešams servisa nosaukums vai host.docker.internal, nevis 127.0.0.1. Konfigurācijas izmaiņām jābūt pēdējai iespējai, nevis pirmajai.

Galvenā diagnostikas robeža ir tā, vai var izveidot TCP savienojumu. Atteice nozīmē, ka klients nav sasniedzis izmantojamu Redis klausītāju pieprasītajā galapunktā. Redis kļūda, piemēram, NOAUTH, nozīmē, ka tas ir to izdarījis. Šo divu gadījumu atšķirīga ārstēšana ļauj izvairīties no nevajadzīgām konfigurācijas izmaiņām un daudz ātrāk nonākt pie īstā cēloņa.

Atstājiet komentāru

Kā novērst kļūdu "ENOSPC: sasniegts failu vērotāju sistēmas ierobežojums" operētājsistēmā Linux

Kā novērst kļūdu "ENOSPC: sasniegts failu vērotāju sistēmas ierobežojums" operētājsistēmā Linux

Novērsiet Linux ENOSPC failu vērotāja kļūdas, pārbaudot inotify ierobežojumus, atrodot procesus, kuros ir daudz vērotāja resursu, droši paaugstinot ierobežojumus un padarot izmaiņas pastāvīgas.

Kā novērst kļūdu “Tailwind CSS stili netiek atjaunināti” Vite React lietotnē

Kā novērst kļūdu “Tailwind CSS stili netiek atjaunināti” Vite React lietotnē

Novērsiet Tailwind CSS stilu neatjaunināšanu pakalpojumā Vite React, pārbaudot Tailwind v4 iestatījumus, CSS importēšanu, avota noteikšanu, dinamiskās klases, HMR un novecojušas kešatmiņas.

Kā novērst ModuleNotFoundError kļūdu: Python 3 nav moduļa ar nosaukumu “pip”

Kā novērst ModuleNotFoundError kļūdu: Python 3 nav moduļa ar nosaukumu “pip”

Novērsiet Python 3 ModuleNotFoundError kļūdu pip funkcijai operētājsistēmās Windows, macOS un Linux, izmantojot ensurepip, OS pakotnes, virtuālās vides un interpretētāja pārbaudes.

Kā GitHub SSH novērst kļūdu "Atļauja liegta (publiskā atslēga)"

Kā GitHub SSH novērst kļūdu "Atļauja liegta (publiskā atslēga)"

Novērsiet GitHub SSH atļaujas liegšanu (publiskā atslēga), pārbaudot resursdatoru, aktīvo SSH atslēgu, GitHub kontu, SSO autorizāciju, attālo URL un 22. porta piekļuvi.

Kā novērst kļūdu “Git Push noraidīts: nepārtīšana uz priekšu”, nezaudējot izmaiņas

Kā novērst kļūdu “Git Push noraidīts: nepārtīšana uz priekšu”, nezaudējot izmaiņas

Droši izlabojiet Git ne-ātrās pārtīšanas kļūdu. Aizsargājiet lokālo darbu, ielādējiet attālinātus izmaiņu izmaiņu ierakstus, izvēlieties apvienošanu vai atkārtotu bāzi, atrisiniet konfliktus un veiciet izmaiņu pārtīšanu, nezaudējot izmaiņas.

Kā novērst kļūdu "Nginx 502 Bad Gateway", veicot starpniekservera darbību ar Node.js

Kā novērst kļūdu "Nginx 502 Bad Gateway", veicot starpniekservera darbību ar Node.js

Izlabojiet Nginx 502 Bad Gateway kļūdas ar Node.js augšupējo resursu, pārbaudot lietotnes portu, NGINX žurnālus, proxy_pass adresi, konteineru tīklošanu, taimautus un atkārtotu ielādi.

Kā TypeScript labot kļūdu “Type 'null' nav piešķirams tipam”

Kā TypeScript labot kļūdu “Type 'null' nav piešķirams tipam”

Novērsta TypeScript kļūda “Tips 'null' nav piešķirams tipam”, izmantojot apvienošanas tipus, sašaurināšanu, noklusējuma vērtības un drošas apgalvojumus, izmantojot strictNullChecks.

Kā novērst kļūdu “Prisma Client has not been generated yet”

Kā novērst kļūdu “Prisma Client has not been generated yet”

Novērsiet Prisma Client ģenerēšanas kļūdu, pārbaudot savu ģeneratoru, shēmu, izvades ceļu, importus, versijas, monorepo iestatījumu un izvietošanas būvēšanas soļus.

Kā novērst kļūdu "ERR_MODULE_NOT_FOUND" Node.js ESM importā

Kā novērst kļūdu "ERR_MODULE_NOT_FOUND" Node.js ESM importā

Izlabojiet Node.js ERR_MODULE_NOT_FOUND kļūdu ESM, pārbaudot importēšanas ceļus, failu paplašinājumus, pakotņu instalēšanu, eksportēšanu, ESM režīmu un tīrās instalācijas.

Kā novērst SSL sertifikāta problēmu: Nevar iegūt vietējo izdevēja sertifikātu Git

Kā novērst SSL sertifikāta problēmu: Nevar iegūt vietējo izdevēja sertifikātu Git

Novērsiet Git kļūdu “nevar iegūt vietējo izdevēja sertifikātu”, identificējot uzticības aizmugurprogrammu, instalējot pareizo CA ķēdi un saglabājot SSL verifikāciju iespējotu.