要在ThinkPHP 6.0中让Redis同时承担缓存与队列双重角色,必须分别配置cache.php和queue.php且共用参数保持一致,安装think-redis与think-queue扩展包,启用php_redis扩展,并严格校验字段大小写与数据类型。

要在 ThinkPHP 6.0 中让 Redis 同时承担缓存与队列双重角色,必须分别完成 cache.php 和 queue.php 两处配置,且二者共用的 Redis 连接参数(如 host、port、password)需保持一致;若只配一处或字段大小写不统一,就会出现 Cache::get() 返回 null、Queue::push() 报错 Driver not supported 等静默失败现象。
确认 PHP 环境已启用 redis 扩展
执行 php -m | grep redis,输出中必须包含 redis。没有则说明扩展未加载,后续所有配置都无效。
Linux/macOS 下运行 pecl install redis,Windows 用户需下载对应 PHP 版本的 php_redis.dll 放入 ext 目录,并在 php.ini 中添加 extension=php_redis.dll(注意:必须放在 extension=php_igbinary.dll 之后,否则会报 Class 'Redis' not found)。
重启 PHP-FPM 或 Apache/Nginx 后再次验证。
立即学习“PHP免费学习笔记(深入)”;
安装 think-redis 与 think-queue 扩展包
在项目根目录执行:
composer require topthink/think-redis
composer require topthink/think-queue
【必须按顺序执行,不可省略任一包】
这两个包分别注册了 Redis 缓存驱动和队列驱动类;仅配置参数而不安装,框架无法识别 type => 'redis' 的含义,直接抛出 Driver [redis] not supported 异常。
配置 config/cache.php 支持 Redis 缓存
打开 config/cache.php,确保以下三点全部满足:
- 将
'default' => env('cache.driver', 'file')改为'default' => 'redis'; - 在
'stores'数组中添加完整'redis'键,内容如下:
'redis' => [<br> 'type' => 'redis',<br> 'host' => '127.0.0.1',<br> 'port' => 6379,<br> 'password' => '',<br> 'select' => 0,<br> 'timeout' => 0,<br> 'expire' => 3600,<br>],
注意:'type' 必须小写,'select' 和 'port' 必须为整数而非字符串;若写成 'select' => '0',连接会静默失败。
配置 config/queue.php 启用 Redis 队列
打开 config/queue.php,修改以下两处:
① 将 'default' => 'sync' 改为 'default' => 'redis';
② 在 'connections' 中定义 'redis' 驱动,字段必须与 cache.php 中的 redis store 完全一致:
'redis' => [<br> 'type' => 'redis',<br> 'queue' => 'default',<br> 'host' => '127.0.0.1',<br> 'port' => 6379,<br> 'password' => '',<br> 'select' => 0,<br> 'timeout' => 0,<br> 'persistent' => false,<br>],
特别注意:'queue' 是队列名称(用于区分不同业务队列),不是 Redis DB 编号;DB 编号由 'select' 控制,两者不能混淆。
验证缓存与队列是否真正生效
方法一:缓存验证
在控制器中写入测试代码:
use think\facade\Cache;<br>Cache::store('redis')->set('test_key', 'test_value', 60);<br>dump(Cache::store('redis')->get('test_key'));
方法二:队列验证
执行命令行:php think queue:listen redis
另起终端执行:php think queue:work redis
若监听进程持续运行且无报错,说明 Redis 队列驱动已就绪。
方法三:直连 Redis 检查键是否存在
运行 redis-cli → 输入 keys "think:cache:test_key",应返回匹配键名;输入 keys "queue:default:*",应看到以 queue:default: 开头的任务键。



















