php database ai_generated true

RedisException: read error on connection to 127.0.0.1:6379

ID: php/redis-gone-away

Also available as: JSON · Markdown
86%Fix Rate
88%Confidence
65Evidence
2023-01-01First Seen

Version Compatibility

VersionStatusIntroducedDeprecatedNotes
83 active — — —

Root Cause

Redis connection errors in PHP occur when the Redis server closes the connection due to timeout, memory pressure, max client limit, or network issues. Long-lived PHP processes (workers, daemons) are especially susceptible because they hold connections across requests.

generic

Workarounds

  1. 90% success Implement connection retry with reconnection logic
    Use a Redis client wrapper that catches RedisException and automatically reconnects. For Predis: configure the connection with read_write_timeout = 0 and set tcp_keepalive = 60. For PhpRedis: use $redis->setOption(Redis::OPT_READ_TIMEOUT, -1) and implement retry logic.
  2. 85% success Use persistent connections with health checks in long-running workers
    Use pconnect() instead of connect() to reuse connections across requests. For queue workers, implement a periodic PING check before operations: if ($redis->ping() !== true) { $redis->connect(...); }. Set appropriate tcp-keepalive in redis.conf.

Dead Ends

Common approaches that don't work:

  1. Setting Redis timeout to 0 (infinite) to prevent disconnections 70% fail

    Disabling timeout allows dead connections to accumulate, eventually hitting Redis maxclients limit. The server becomes unable to accept new connections, affecting all applications.

  2. Creating a new Redis connection on every operation 65% fail

    Establishing a new TCP connection for each Redis operation adds significant latency (1-3ms per connection). Under high load, this can exhaust ephemeral ports and create thousands of TIME_WAIT sockets.

Error Chain

Leads to:
Preceded by:
Frequently confused with: