ThinkPHP 5 连接 Redis 缓存需三步:启用 phpredis 扩展、正确配置 config.php 中 cache 的 type='redis' 等参数、实测 Cache::set/get 是否生效;任一环节出错均导致返回 null 或“Driver not supported”。

ThinkPHP 5 连接 Redis 缓存服务器,核心是三步打通:PHP 环境装对扩展、框架配对驱动类型、参数写准且服务可达。漏掉任一环,Cache::get() 都会返回 null 或报 “Driver not supported”。
确认 PHP redis 扩展已启用
TP5 依赖原生 phpredis 扩展(不是 Predis),不装它,后续所有配置都无效。
- 终端执行
php -m | grep redis,必须看到redis输出 - 没输出?Linux/macOS 可用
pecl install redis安装;Windows 需下载与 PHP 版本严格匹配的php_redis.dll(注意 TS/NTS、VC 编译版本) - 编辑
php.ini,添加或取消注释:extension=redis.so(Linux/macOS)或extension=php_redis.dll(Windows) - 重启 PHP-FPM 或 Web 服务器(如 Nginx/Apache)后,必须重新运行
php -m | grep redis验证
修改 config.php 中的 cache 配置
TP5.0/5.1 默认使用 application/config.php 统一管理缓存,不是 config/cache.php。常见失效就因改错了文件或字段拼写错误。
- 找到
'cache' => []区块,整体替换为:
'cache' => [
'type' => 'redis',
'host' => '127.0.0.1',
'port' => 6379,
'password' => '',
'timeout' => 20,
'expire' => 3600,
'prefix' => 'think:',
],
-
type必须小写'redis',写成'Redis'或'REDIS'会导致驱动注册失败 - 密码为空也要写
'',不能省略、不能写null - 若 Redis 运行在非默认端口或带认证,请同步更新
port和password
验证 Redis 是否真实生效
别只看配置写了就以为通了,必须实测。
立即学习“PHP免费学习笔记(深入)”;
- 在控制器中写测试代码:
use think\Cache;
Cache::set('tp5_test', 'ok', 60);
dump(Cache::get('tp5_test')); // 应输出 string(2) "ok"
- 如果返回
null,优先检查type大小写和php -m结果 - 进一步确认:用
redis-cli连上 Redis,执行keys *think*,应能看到类似think:tp5_test的键 - 也可用原生方式探活:
$redis = new \Redis(); $redis->connect('127.0.0.1', 6379); echo $redis->set('raw_test', 'hello');
补充说明:多缓存类型或复合配置(可选)
如需同时支持 file + redis,或用 complex 类型做降级策略,可在 config/cache.php 中配置:
- 设置
'type' => 'complex',再定义'default'(如 file)和'redis'子项 - 使用时显式指定驱动:
Cache::store('redis')->set('key', 'val') - 注意:此时
config.php中的cache配置会被忽略,以config/cache.php为准



















