cache::get()返回null或报driver[redis]not supported,主因是驱动未注册或配置漏项:需启用php redis扩展、安装topthink/think-redis包、在config/cache.php中设default为'redis'且stores.redis完整配置(type小写、select为整数、password显式声明)、关闭prefix便于调试,并用命令行验证读写。

Cache::get() 返回 null 或报 Driver [redis] not supported,基本就是驱动没注册或配置漏项——不是 Redis 服务没开,而是 ThinkPHP 根本没连上它。
确认 PHP redis 扩展已启用
ThinkPHP 6 的 Redis 驱动依赖原生 phpredis 扩展,不是 predis,也不是仅靠 Composer 包就能跑起来。
- 运行
php -m | grep redis,输出里必须有redis;Windows 用户看phpinfo()页面是否有 redis 模块 - 没输出?说明扩展未加载:Linux/macOS 执行
pecl install redis,然后在php.ini加extension=redis.so;Windows 下放php_redis.dll并加extension=php_redis.dll - 改完 php.ini 必须重启 PHP-FPM 和 Web 服务器(Nginx/Apache),否则配置不生效
- 扩展装错版本(比如 PHP 8.3 装了 PHP 7.x 的 dll)会导致
Class 'Redis' not found
安装 topthink/think-redis 并验证类存在
TP6 默认不带 Redis 驱动类,composer require topthink/think-redis 是硬性前置条件,缺它就根本找不到 RedisCache 类。
Redis 缓存和数据结构管理技能。通过自然语言操作 Redis,支持 String、Hash、List、Set、ZSet、Stream 等数据结构操作。当用户提到 Redis、缓存、消息队列、会话存储时使用此技能。
- 执行
composer require topthink/think-redis,完成后检查vendor/topthink/think-redis/src/Driver.php是否存在 - 别装
predis/predis或phpredis/phpredis—— 这些是底层扩展或客户端,不是 TP 的驱动适配器 - 如果用 Swoole 或命令行任务,确保
ThinkRedisServiceProvider已被自动加载;若手动启动容器,可能需显式调用register() -
Driver [redis] not supported异常 90% 出在这里:包没装,或装了但 autoloader 没扫到
config/cache.php 中 stores.redis 必须完整且类型严格
只改 'default' => 'redis' 不够,stores.redis 块缺失或字段错位,TP 会静默 fallback 到 file 驱动,毫无提示。
-
'type' => 'redis'必须全小写,写成'Redis'或'REDIS'就失效 -
'select' => 0必须是整数,写成'select' => "0"会导致连接失败但无报错 -
'password' => ''即使没密码也得显式写出,留空或写null会触发认证拒绝 - 不支持
redis://URL 格式,只能用'host'+'port'+'select'拆开配 - 调试时建议加
'prefix' => '',否则用redis-cli get user_123查不到——实际存的是think:user_123
验证连接与 key 生效逻辑
配置写完不代表能用,TP 对参数错误容忍度高,容易“看似成功实则降级”。
- 命令行验证最可靠:
php -r "var_dump(cache('test', 'ok', 10));"再php -r "var_dump(cache('test'));",两次都返回"ok"才算通 -
cache('key', $val, 0)不是永不过期,而是立刻删除;要永久缓存得传null - 高并发下默认短连接会打满 Redis 连接数,加
'persistent' => true启用长连接 - Redis 服务本身必须可达:Docker 环境注意 host 写
host.docker.internal,远程 Redis 检查redis.conf的bind和防火墙
最容易被忽略的是 select 类型和 password 显式声明——这两个点出错不会抛异常,只会让所有缓存操作静默走 file 驱动,日志里也看不到痕迹。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










