Så här åtgärdar du felet 'Redis Connection to 127.0.0.1:6379 Failed'

Kort svar: Om din applikation rapporterar Could not connect to Redis at 127.0.0.1:6379: Connection refused, börja med att kontrollera om en Redis-server faktiskt lyssnar på den adressen och porten. Redis CLI använder 127.0.0.1 och port 6379 som standard, så ett avslag pekar oftast på en stoppad server, en annan port, en nätverkskonflikt i en container eller virtuell maskin, eller ett problem med lyssnarkonfigurationen. Autentiseringsfel är annorlunda: de uppstår normalt först efter att TCP-anslutningen redan har etablerats.

Den snabbaste diagnostiken är redis-cli -h 127.0.0.1 -p 6379 PING. Om den returnerar PONG är Redis nåbar och du bör istället inspektera applikationens Redis-URL, autentiseringsuppgifter, TLS-inställningar eller konfiguration av anslutningspool, istället för att blindt starta om Redis. Redis dokumenterar PING specifikt som ett sätt att testa om en anslutning är levande och om servern kan tillhandahålla data. Se den officiella dokumentationen för Redis PING-kommandot.

Snabb diagnos-tabell

Vad du serMest sannolikt område att kontrolleraFörsta åtgärd
Connection refusedIngen lyssnare på målhost/port, felaktig endpoint eller nätverkskonflikt i containerKör redis-cli -h 127.0.0.1 -p 6379 PING
PONG i Redis CLI men appen misslyckas fortfarandeApplikationskonfigurationJämför appens värd, port, databas, TLS, användarnamn och lösenord med den fungerande CLI-anslutningen
NOAUTH eller WRONGPASSAutentisering eller ACLAnge korrekt Redis-användare/lösenord; behandla inte detta som ett problem med portlyssning
TLS- eller certifikatfelProtokollkonfliktAnvänd TLS-inställningar och rediss:// när servern kräver krypterade anslutningar
Fungerar på värden men inte i en containerDocker-nätverkSluta använda 127.0.0.1 om inte Redis finns i samma container; använd rätt tjänst- eller värdadress

1. Reproducera felet utanför din applikation

Använd Redis CLI innan du ändrar applikationskod. Redis officiella CLI-dokumentation säger att redis-cli som standard ansluter till 127.0.0.1:6379. Du kan göra målet explicit:

redis-cli -h 127.0.0.1 -p 6379 PING

En framgångsrik lokal server bör svara:

PONG

Om du får samma meddelande om anslutningsavslag har du reproducerat problemet på transportnivå. Det är användbart eftersom det tar bort ditt ramverk, ORM, cache-bibliotek och applikationskod från den omedelbara utredningen. Redis CLI accepterar också -h för värden och -p för porten, enligt dokumentationen i Redis CLI-referensen.

PowerShell-exempel som visar redis-cli som ansluter till 127.0.0.1 på port 6379 och får ett Connection refused-fel
Exempel på terminalvy för den första diagnostiken: en explicit Redis CLI PING till 127.0.0.1:6379 bekräftar att avslaget inte är begränsat till applikationskoden.

Om PING redan returnerar PONG, hoppa till steg 5. Starta inte om en frisk Redis-instans upprepade gånger; fokusera på applikationens anslutningssträng och körningsmiljö.

2. Se till att Redis-servern körs

På ett Linux-system installerat via en pakethanterare kan Redis vanligtvis styras som en systemtjänst. Redis Linux-installationsdokumentation visar systemctl start och systemctl stop, med noteringen att tjänstenamnet kan vara redis eller redis-server beroende på plattform. En typisk Ubuntu/Debian-kontroll är:

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

Om din distribution använder redis som tjänstenamn, ersätt med det namnet. Om systemd inte hanterar din Redis-process, använd den startmetod som matchar hur du installerade Redis istället för att anta att en tjänst finns. Den nuvarande Redis Linux-vägledningen finns i den officiella Linux-installationsdokumentationen.

Ubuntu-terminal exempel som kontrollerar redis-server med systemctl, startar tjänsten och visar den som aktiv och körande
Ett Ubuntu/Debian systemd-exempel: kontrollera Redis-tjänsten, starta den om den är inaktiv och verifiera att tjänsten rapporterar ett aktivt körande tillstånd.

Windows och WSL-notering

Anta inte att en nativ Windows Redis-tjänst finns bara för att din applikation körs på Windows. Redis nuvarande installationsöversikt listar Windows under Docker-vägen, medan Redis också underhåller Windows-vägledning för WSL och dess Windows-kompatibilitetspartner. Om Redis körs inuti WSL, testa det från samma WSL-miljö först. Om Redis körs i Docker Desktop, använd Docker-kontrollerna i nästa avsnitt. Se den nuvarande installationsöversikten för Redis Open Source och Redis Windows/WSL installationsdokumentation.

3. Kontrollera port 6379 och åtgärda Docker-nätverk

Redis använder normalt TCP-port 6379. Om Redis körs men ingenting lyssnar på den porten, kontrollera om servern startades med en annan konfiguration. På Linux kan en snabb operativsystemkontroll som ss -ltnp visa lyssnande TCP-uttag; på Windows kan PowerShells Test-NetConnection 127.0.0.1 -Port 6379 hjälpa till att skilja på en lyssnande port och en avslagen port. Den avgörande testet förblir dock ett fungerande Redis-kommando som PING.

Om Redis körs i Docker och din app körs på värden

Containerporten måste publiceras till värden. Redis Docker-dokumentation visar en värd-till-container-mappning för port 6379. För lokal utveckling kan du binda den publicerade porten till värdens loopback-adress:

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

Dockers egen dokumentation för portpublicering förklarar att specificering av 127.0.0.1 gör den publicerade porten endast nåbar från Docker-värden, vilket är säkrare för en lokal utvecklingscache än att publicera den på alla gränssnitt. Redis officiella Docker-snabbstart och anslutningsexempel finns i Kör Redis Open Source på Docker, och värdadressbeteendet beskrivs i Dockers dokumentation för portpublicering.

Docker-terminal exempel som startar en Redis-container med värdport 6379 mappad till containerport 6379 och kontrollerar mappningen med docker ps
Ett Docker-exempel för värdapplikationer: publicera containerport 6379 till 127.0.0.1:6379, bekräfta sedan mappningen med docker ps innan du testar Redis.

Om din applikation också körs i Docker

Detta är en vanlig källa till förvirring. Inuti en container refererar 127.0.0.1 till själva containern. Om Redis är en separat Compose-tjänst, anslut till Redis-tjänstens namn, som redis:6379, på det delade Compose-nätverket istället för 127.0.0.1:6379. Docker dokumenterar att Compose-tjänster på standardnätverket är upptäckbara via tjänstenamn i sin Compose-nätverksguide.

Om applikationen finns i en Docker Desktop-container men Redis körs direkt på värden, rekommenderar Docker det speciella värdnamnet host.docker.internal för att nå värdtjänster. Det beteendet dokumenteras i Docker Desktop nätverks-FAQ.

4. Verifiera redis.conf: bind, skyddat läge och port

Om processen körs men lyssnar på fel gränssnitt eller port, inspektera konfigurationsfilen som den aktiva Redis-processen faktiskt använder. Tre inställningar är viktigast för detta fel:

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

Den officiella Redis-konfigurationsmallen använder loopback-bindning för lokal åtkomst, aktiverar skyddat läge som standard och ställer in den normala TCP-porten till 6379. Den dokumenterar också att port 0 inaktiverar den icke-TLS TCP-lyssnaren. Du kan inspektera den nuvarande mallen i det officiella Redis-repositoriet.

Redis-konfiguration exempel som visar loopback-bindadresser, protected-mode yes, port 6379 och en framgångsrik redis-cli PING som returnerar PONG
Ett konfigurationsexempel för lokal utveckling: Redis lyssnar på loopback på port 6379 med skyddat läge aktiverat, följt av en framgångsrik PING som returnerar PONG.

För en utvecklingsmiljö på samma värd är loopback-bindning lämplig. För en legitim fjärr- eller flervärd-deployering, lös inte anslutningsproblem genom att slarvigt ändra bind till alla gränssnitt och stänga av protected-mode. Redis varnar mot att exponera dess TCP-port för okända nätverk. Använd ett lämpligt nätverksgränssnitt, brandväggspolicy och Redis-autentisering eller ACL istället. Granska den officiella Redis säkerhetsvägledningen innan du vidgar nätverksåtkomsten.

Efter att du ändrat konfigurationen, starta om Redis med samma tjänsthanterare, containerkommando eller processövervakare som äger den körande instansen. Upprepa sedan:

redis-cli -h 127.0.0.1 -p 6379 PING

5. Om Redis svarar, åtgärda applikationens anslutningsinställningar

När Redis CLI returnerar PONG från samma körningsmiljö som din applikation, är det ursprungliga anslutningsavslagsproblemet inte längre ett problem med Redis-lyssnaren. Jämför applikationens inställningar med det framgångsrika testet. Kontrollera alla dessa värden:

  • Värdnamn eller IP-adress
  • TCP-port
  • Databasnummer, om din applikation väljer en icke-standard databas
  • Användarnamn och lösenord när ACL-autentisering är aktiverad
  • Huruvida anslutningen använder vanlig Redis eller TLS
  • Huruvida appen körs på värden, i WSL, i en container eller på en annan maskin

En lokal, icke-TLS URL ser ofta ut så här:

redis://127.0.0.1:6379/0

Redis CLI stöder också Redis-URI:er och dokumenterar rediss:// för TLS. Om servern kräver autentisering, använd lämpligt användarnamn och lösenord. För CLI-testning rekommenderar Redis miljövariabeln REDISCLI_AUTH istället för att sätta ett lösenord direkt på kommandoraden. Se Redis CLI anslutningsalternativ.

Förväxla inte autentiserings- och TLS-fel med anslutningsavslag

Om meddelandet ändras från Connection refused till NOAUTH, WRONGPASS eller ett ACL-fel, är det framsteg: klienten nådde Redis-servern och behöver nu giltiga autentiseringsuppgifter. Redis rekommenderar ACL-baserad autentisering för moderna deployeringar; den officiella Redis ACL-dokumentationen förklarar modellen.

På samma sätt, om slutpunkten kräver TLS, kan en vanlig TCP Redis-klient misslyckas under protokolluppsättningen även om porten är nåbar. Redis CLI stöder --tls, och Redis-URI:er använder rediss-schemat för TLS-anslutningar. För server-sidans TLS-detaljer, se Redis TLS-dokumentation.

Miljöspecifika anslutningsmål

Var Redis körsVar appen körsTypiskt målViktig villkor
Samma värdSamma värd127.0.0.1:6379Redis måste lyssna på loopback-port 6379
Docker-containerVärd-OS127.0.0.1:6379Publicera containerporten till värden
Docker Compose-tjänstEn annan tjänst i samma Compose-projektredis:6379 eller ditt faktiska tjänstenamnBåda tjänsterna måste dela det relevanta Docker-nätverket
Värd-OSDocker Desktop-containerhost.docker.internal:6379Redis måste acceptera anslutningen från Docker-värdvägen
FjärrserverEn annan maskinRedis-serverns nåbara värdnamn/IP och konfigurerad portNätverkspolicy, bind-inställningar, autentisering och eventuellt TLS måste tillåta åtkomst

Snabb checklista

  • Kör redis-cli -h 127.0.0.1 -p 6379 PING.
  • Om avslaget, bekräfta att Redis-processen eller tjänsten körs.
  • Bekräfta att Redis verkligen lyssnar på port 6379, eller uppdatera klienten till den konfigurerade porten.
  • Om du använder Docker, verifiera portmappningen och om klienten är på värden eller i en annan container.
  • Om båda tjänsterna finns i Compose, använd Redis-tjänstens namn istället för 127.0.0.1.
  • Kontrollera den aktiva redis.conf för bind, protected-mode och port.
  • Håll Redis borta från det offentliga internet; inaktivera inte säkerhetsinställningar enbart för att få felet att försvinna.
  • När PING fungerar, gå vidare till applikationsautentiseringsuppgifter, TLS, URL, databasnummer och miljöspecifikt nätverk.

Vad löser vanligtvis detta fel?

För en utvecklingsmaskin är den vanligaste framgångsrika vägen enkel: starta Redis, se till att den lyssnar på den slutpunkt din app faktiskt använder, och verifiera sedan med PING. Docker ändrar betydelsen av “localhost”, så containeriserade applikationer behöver ofta ett tjänstenamn eller host.docker.internal istället för 127.0.0.1. Konfigurationsändringar bör vara det sista utvägen, inte det första.

Den viktiga diagnostiska gränsen är om en TCP-anslutning kan etableras. Ett avslag betyder att klienten inte har nått en användbar Redis-lyssnare på den begärda slutpunkten. Ett Redis-fel som NOAUTH betyder att den har det. Att behandla dessa två fall olika undviker onödiga konfigurationsändringar och får dig till den verkliga orsaken mycket snabbare.

Lämna en kommentar

Hur man åtgärdar "Tailwind CSS-stilar uppdateras inte" i en Vite React-app

Hur man åtgärdar "Tailwind CSS-stilar uppdateras inte" i en Vite React-app

Åtgärda Tailwind CSS-stilar som inte uppdateras i Vite React genom att kontrollera Tailwind v4-inställningar, CSS-importer, källkodsidentifiering, dynamiska klasser, HMR och inaktuella cacher.

Så här åtgärdar du ModuleNotFoundError: Ingen modul med namnet 'pip' i Python 3

Så här åtgärdar du ModuleNotFoundError: Ingen modul med namnet 'pip' i Python 3

Åtgärda Python 3:s ModuleNotFoundError för pip på Windows, macOS och Linux med ensurepip, OS-paket, virtuella miljöer och tolkkontroller.

Hur man åtgärdar "Tillstånd nekad (publickey)" i GitHub SSH

Hur man åtgärdar "Tillstånd nekad (publickey)" i GitHub SSH

Åtgärda GitHub SSH-behörighet nekad (publickey) genom att kontrollera värden, aktiv SSH-nyckel, GitHub-konto, SSO-auktorisering, fjärr-URL och port 22-åtkomst.

Hur man åtgärdar "Git Push Rejected: Non-Spolar framåt" utan att förlora ändringar

Hur man åtgärdar "Git Push Rejected: Non-Spolar framåt" utan att förlora ändringar

Åtgärda en Git-push som inte snabbspolar framåt på ett säkert sätt. Skydda lokalt arbete, hämta fjärrcommits, välj merge eller rebase, lös konflikter och pusha utan att förlora ändringar.

Hur man åtgärdar "Nginx 502 Bad Gateway" vid proxyanvändning till Node.js

Hur man åtgärdar "Nginx 502 Bad Gateway" vid proxyanvändning till Node.js

Åtgärda Nginx 502 Bad Gateway-fel med en Node.js-uppström genom att kontrollera appporten, NGINX-loggarna, proxy_pass-adressen, containernätverk, timeouts och omladdning.

How to Fix “Type 'null' Is Not Assignable to Type” in TypeScript

How to Fix “Type 'null' Is Not Assignable to Type” in TypeScript

Fix TypeScript's “Type 'null' is not assignable to type” error with union types, narrowing, defaults, and safe assertions under strictNullChecks.

Så här åtgärdar du felet ”Prisma Client has not been generated yet”

Så här åtgärdar du felet ”Prisma Client has not been generated yet”

Åtgärda felet att Prisma Client inte har genererats genom att kontrollera din generator, ditt schema, utdatasökvägen, importerna, versionerna, monorepo-konfigurationen och byggstegen vid distribution.

Hur man åtgärdar "ERR_MODULE_NOT_FOUND" i Node.js ESM-importer

Hur man åtgärdar "ERR_MODULE_NOT_FOUND" i Node.js ESM-importer

Åtgärda Node.js ERR_MODULE_NOT_FOUND i ESM genom att kontrollera importsökvägar, filtillägg, paketinstallation, exporter, ESM-läge och rena installationer.

Så här åtgärdar du SSL-certifikatproblemet: Unable to Get Local Issuer Certificate i Git

Så här åtgärdar du SSL-certifikatproblemet: Unable to Get Local Issuer Certificate i Git

Åtgärda Gits fel 'unable to get local issuer certificate' genom att identifiera förtroendebakgrunden, installera rätt CA-kedja och hålla SSL-verifieringen aktiverad.

Så åtgärdar du MongoDB-nätverksavbrott vid Mongoose-anslutning

Så åtgärdar du MongoDB-nätverksavbrott vid Mongoose-anslutning

Åtgärda MongoDB-nätverksavbrott i Mongoose genom att identifiera avbrottstypen, testa Atlas- eller TCP-anslutning, korrigera URI:n och justera tidsgränser endast när det är motiverat.