thinkphp 5 中 redis 缓存的 port 和 timeout 必须显式设为整数且值准确:port 需与 redis 实际监听端口一致(如 6379,不可写字符串 "6379"),timeout 控制连接等待时长(建议生产环境设 5~10 秒,0 表示无限等待不推荐),配置位于 config/cache.php(tp5.1+)或 application/config.php(tp5.0),验证可用 cache::store('redis')->set/get 或 redis-cli ping。

ThinkPHP 5 中 Redis 缓存的 port 和 timeout 是连接配置里的关键参数,必须显式、准确设置,否则缓存会静默失败(比如 Cache::get() 返回 null,不报错)。
port 设置:必须与 Redis 实际监听端口一致
默认是 6379,但如果你改过 Redis 配置(如 docker 容器映射、自定义 redis.conf),就得同步调整:
-
'port' => 6379—— 数值类型,不能写成字符串"6379" - 若 Redis 运行在非标准端口(比如
6380),这里必须对应修改 - Docker 场景下注意宿主机端口映射是否正确,
host填的是容器可访问地址(如redis容器名或host.docker.internal),port填容器内监听端口(通常是6379)
timeout 设置:控制连接建立等待时长(单位:秒)
它指 PHP 尝试连接 Redis 服务时,最多等待多少秒。设太小易超时失败,设太大则阻塞明显:
- 本地开发常用
'timeout' => 20或'timeout' => 30 - 生产环境建议
5 ~ 10秒,避免请求长时间卡死 - 值为
0表示无限等待(不推荐,可能引发雪崩) - 注意:
timeout不影响命令执行超时(那是 Redis 自身的timeout配置),只管“连上”这一步
配置位置和写法示例(以 config/cache.php 为准)
TP5.1+ 推荐统一在 config/cache.php 中配置:
'default' => 'redis',
'stores' => [
'redis' => [
'type' => 'redis',
'host' => '127.0.0.1',
'port' => 6379, // ✅ 整数,不可引号
'password' => '',
'select' => 0,
'timeout' => 10, // ✅ 单位秒,建议 5~30
'expire' => 3600,
'prefix' => 'tp5:',
],
],
如果用 TP5.0,配置在 application/config.php 的 'cache' 键下,结构相同,port 和 timeout 同样要求类型准确、值合理。
验证是否生效的小技巧
配完别急着写业务,先快速验证连接通不通:
- 命令行执行:
php think tinker,然后输入Cache::store('redis')->set('test_key', 'ok', 60),再Cache::store('redis')->get('test_key')—— 应返回'ok' - 或者用原生 Redis CLI:
redis-cli -h 127.0.0.1 -p 6379 ping,确认服务可达 - 查看 PHP 错误日志,若出现
Connection refused或Operation timed out,优先检查port和timeout是否匹配实际环境
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











