thinkphp 5 中 type 必须为全小写 'redis',大小写错误会导致驱动加载失败而静默回退至 file 驱动;需确保配置在 application/config.php 的 cache 数组内、php redis 扩展已启用并重启服务。

因为 ThinkPHP 5 的缓存驱动注册机制依赖**严格的小写字符串匹配**,type 必须是 'redis',写成 'Redis'、'REDIS' 或 'Redis' 都会导致框架无法识别并加载对应驱动类。
驱动类加载靠字符串精确匹配
TP5 在初始化缓存时,会根据 type 值去查找对应的驱动类(如 think\cache\driver\Redis)。这个查找过程不是忽略大小写的模糊匹配,而是直接拼接命名空间和类名:
→ 'redis' → think\cache\driver\Redis(存在)
→ 'Redis' → think\cache\driver\Redis(看似一样,但实际触发自动加载时,PSR-4 规范要求文件名和类名严格一致,而 TP5 的 driver 目录下只有小写命名的 redis.php 文件,其内部定义的类是 Redis,但前提是调用路径必须是小写 key 才能命中)
→ 实际结果是:框架找不到合法驱动,静默 fallback 到默认的 File 驱动,Cache::get() 就查不到 Redis 里存的数据,甚至不报错。
常见表现和验证方式
-
Cache::get('test')返回null,即使你确认 Redis 服务正常、key 已写入 -
Cache::set('test', 'ok', 60)看似成功,但用redis-cli keys "*"查不到任何键 - 执行
php -r "var_dump(cache('x','y',10)); var_dump(cache('x'));"第二次输出null,说明根本没走 Redis
正确写法与检查要点
-
'type' => 'redis'—— 全小写,一个字母都不能大写 - 确保该配置在
application/config.php的'cache' => [...]数组内(TP5.0/5.1 不读config/cache.php) - 同时确认 PHP redis 扩展已启用:
php -m | grep redis必须有输出 - 重启 Web 服务器或 PHP-FPM,否则新配置不生效
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











