This reproducer demonstrates an inconsistency in Laravel's framework code:
Illuminate\Database\Connectionreconnects and retries on lost connection — caller sees a transparent recovery.Illuminate\Redis\Connections\PhpRedisConnectionreconnects on lost connection but immediately throws — the rebuilt\Redisclient is wasted, the caller still sees an exception.
It also shows that phpredis' built-in OPT_MAX_RETRIES / backoff options (integrated into Laravel via #54191) don't help here. Those options retry connection-loss detected before sending a command (via redis_check_eof); they don't engage on the "command already sent, read timed out" path that this reproducer simulates.