thinkphp5.0启用redis缓存需确保php redis扩展已加载、config.php中cache配置type为小写'redis'且参数正确、redis服务可达;否则cache::get()返回空或报“driver not supported”。

在ThinkPHP5.0项目中启用Redis缓存时,若Cache::get()始终返回空值、缓存写入不生效或抛出“Driver not supported”异常,说明配置链存在断裂——可能是PHP扩展未加载、驱动类缺失、配置字段拼写错误,或Redis服务本身不可达。
确认PHP Redis扩展已启用
ThinkPHP5.0依赖原生phpredis扩展,不兼容Predis等纯PHP实现。若扩展未启用,所有Redis缓存操作将静默退化为file驱动或直接报错。
执行命令 php -m | grep redis,终端必须输出 redis;无输出即表示扩展未加载。
如未安装,Linux/macOS用户运行 pecl install redis,Windows用户需下载与PHP版本严格匹配的 php_redis.dll(注意TS/NTS、VC版本),放入 ext 目录。
编辑 php.ini,取消注释或新增一行:extension=redis.so(Linux/macOS)或 extension=php_redis.dll(Windows)。
【重启PHP-FPM或Web服务器后,必须再次执行 php -m | grep redis 验证,否则后续配置全部无效】
修改application/config.php中的缓存配置
TP5.0默认使用application/config.php统一管理缓存,而非独立的config/cache.php。此处配置错误是导致“缓存不生效”的最常见原因。
找到文件中已有的'cache' => [...]区块,将其整体替换为以下内容:
'cache' => [<br> 'type' => 'redis',<br> 'host' => '127.0.0.1',<br> 'port' => 6379,<br> 'password' => '',<br> 'timeout' => 20,<br> 'expire' => 3600,<br> 'prefix' => 'think:',<br>],
注意:'type'必须小写'redis',写成'Redis'或'REDIS'会导致驱动注册失败。
如果Redis设置了密码,'password'字段必须填写字符串(即使为空也要保留''),不能省略或设为null。
验证缓存是否真正生效
方法一:用原生Redis命令快速探活
在控制器中写入测试代码:$redis = new \Redis(); $redis->connect('127.0.0.1', 6379); $redis->set('test_key', 'tp5_test'); echo $redis->get('test_key');。能输出tp5_test说明服务层通路正常。
方法二:用ThinkPHP Cache类验证驱动绑定
执行:use think\Cache; Cache::set('tp5_redis_test', 'success', 60); dump(Cache::get('tp5_redis_test'));。若返回null,说明配置未被框架识别,重点检查type大小写和php.ini扩展加载状态。
方法三:查看Redis服务端实际写入
用redis-cli连接后执行keys *think*,应能看到带think:前缀的key;若无结果,说明缓存未写入Redis,而是落在了默认的File驱动里。
第一步:打开终端,输入redis-cli → 第二步:执行auth your_password(如有密码)→ 第三步:执行keys *think* → 第四步:观察返回结果是否包含你刚设置的key。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











