laravel 9+ 使用 phpredis 需同时配置 session_driver=redis 和 redis_client=phpredis,确保 php 已加载 redis 扩展(php -m | grep redis),并设置 prefix 与分库隔离,octane 下还需启用 connection_pool。

SESSION_DRIVER=redis 但报 Class "Predis\Client" not found
这是 Laravel 9+ 切换 phpredis 驱动最典型的症状:Laravel 默认尝试用 Predis\Client,但你装的是 phpredis 扩展,没装 predis 包,也没关掉默认客户端绑定。
必须同步改两处:
-
SESSION_DRIVER=redis(或CACHE_DRIVER=redis、QUEUE_CONNECTION=redis) -
REDIS_CLIENT=phpredis—— 这行不能漏,且值必须是phpredis(不是phpredis.so或其他)
改完立刻执行 php artisan config:clear,否则缓存的旧配置仍会尝试加载 Predis\Client。
php -m | grep redis 返回空,但 .env 已设 REDIS_CLIENT=phpredis
环境变量再对也没用——PHP 根本没加载 redis 扩展。Laravel 9+ 的 phpredis 驱动依赖 PHP 原生扩展,不是 Composer 包。
验证方式只有这一种:php -m | grep redis 必须输出 redis。没输出就说明:
- Docker 环境:Dockerfile 里漏了
docker-php-ext-install redis或没重启容器 - Mac M1/M2:Homebrew 安装的 PHP 可能用的是
pecl install redis,但redis.ini没正确加载(检查php --ini输出的配置路径) - Linux:
extension=redis.so在php.ini中被注释,或路径写错
别信 composer require predis/predis 能“替代”它——那是另一套客户端,和 REDIS_CLIENT=phpredis 冲突。
config/database.php 里 redis.default 的 'options' 缺少 'prefix'
不加 prefix 不会报错,但会导致 Laravel session、cache、queue 全部往 Redis 的 database 0 写 key,互相覆盖或污染。
例如 session 写 laravel_session:abc123,cache 却读 laravel_session:abc123 当作自己的 key,反序列化失败后静默返回 null。
推荐在 config/database.php 的 redis.default.options 里显式加:
'options' => [
'prefix' => 'laravel_',
],
再配合 .env 中分库设置:
-
REDIS_CACHE_DB=1→ cache 用 db 1 -
REDIS_SESSION_DB=2→ session 用 db 2 -
REDIS_QUEUE_DB=3→ queue 用 db 3
这样 prefix + database 双隔离,比单靠 prefix 更可靠。
Laravel Octane 下 phpredis 必须启用 connection_pool
Octane 是常驻内存模型,每个请求复用 worker 进程。若不启用连接池,每次 Redis::get() 都新建 TCP 连接,很快打满 Redis 的 maxclients,出现 ERR max number of clients reached。
必须在 config/database.php 的 redis.default 下加:
'options' => [
'prefix' => 'laravel_',
'connection_pool' => [
'pool_size' => 16,
'pool_idle_timeout' => 60,
],
],
注意:predis 客户端完全不支持 connection_pool,所以 REDIS_CLIENT=predis + Octane = 必然连接数告警。
另外,Octane 要求 Redis 连接串必须是 redis:// 格式(如 REDIS_URL=redis://:password@127.0.0.1:6379/0),仅靠 REDIS_HOST 等变量会初始化失败。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











