tp6与tp8在redis缓存配置上完全兼容,需显式配置host、port(整型)、database、密码(password或auth)、timeout(float)及persistent;必须安装think-redis扩展并手动配置连接池与key前缀以避免冲突。

TP6 和 TP8 在连接 Redis 作为缓存驱动时,**配置结构基本一致,核心逻辑完全兼容**,没有本质区别。真正影响能否连上的,不是版本号,而是你有没有写对 config/cache.php 里的那一组参数、装对扩展、配全字段。
配置文件位置和结构一样
两者都统一使用 config/cache.php 文件,且都依赖 stores['redis'] 数组定义连接参数。
不读 .env 里的 REDIS_HOST/REDIS_PORT 等变量,这些只作开关(如 CACHE_STORE=redis),不能替代实际配置。
- 必须显式写
'host' => '127.0.0.1'(不能省略,默认值不生效) -
'port' => 6379必须是整型,不是字符串 "6379" -
'database' => 0必须指定,否则部分命令执行失败 - 密码字段:Redis 'password' => 'xxx';≥6.0 启用 ACL 时改用
'auth' => 'xxx',并确认用户有 +@all 权限 -
'timeout' => 3.0建议设为 float,避免连接卡死 - 高并发场景务必加
'persistent' => true开启长连接
扩展包要求相同
TP6 和 TP8 都不再内置 Redis 缓存驱动类,必须安装官方适配器:
Redis 缓存和数据结构管理技能。通过自然语言操作 Redis,支持 String、Hash、List、Set、ZSet、Stream 等数据结构操作。当用户提到 Redis、缓存、消息队列、会话存储时使用此技能。
- 运行
composer require topthink/think-redis - 确保
vendor/topthink/think-redis/src/Driver.php存在且可自动加载 - 没装这个包,
Cache::store('redis')会直接报错:Driver [redis] not supported
连接池配置都得手动开
TP6 和 TP8 默认都不启用连接池复用,每次调用都可能新建连接——容易导致 Redis 连接数暴涨。
- 需在
stores['redis']下显式添加'pool' => ['min_idle' => 5, 'max_active' => 30]等配置 - 避免在业务代码中反复
new \think\cache\driver\Redis(),这是连接泄漏主因 - 验证是否生效:看
redis-cli info clients的connected_clients是否稳定在合理范围
隔离与前缀建议也一致
cache 和 session 共用一个 Redis 实例时,TP6 和 TP8 都面临 key 冲突风险:
- 最稳妥方式:cache 用
database => 0,session 用database => 1 - 若只能共用 database,必须分别加前缀:
'prefix' => 'cache_'和'prefix' => 'sess_' - 别信“默认带 prefix”——TP8 的 redis store 默认 prefix 是空字符串,key 命名靠手动控制
不复杂但容易忽略。










