thinkphp5缓存配置必须单独写在config/cache.php中,返回含type和stores的数组;file驱动需path,redis驱动必填host/port,prefix/expire须置于stores子项内。

ThinkPHP 5 的缓存配置必须单独写在 config/cache.php 文件中,不能混在 app.php 或其他配置文件里。这个文件需返回一个 PHP 数组,结构清晰、字段明确,缺一不可。
基础结构:必须包含 type 和 stores
最简可用的配置需满足两个核心要求:
-
顶层必须有 'type' 键,指定默认驱动类型(如
'File'、'Redis') -
必须定义 'stores' 子数组,其中至少包含一个具名驱动配置(如
'file'或'redis')
示例(文件缓存):
config/cache.phpreturn [
'type' => 'File',
'default' => 'file',
'stores' => [
'file' => [
'type' => 'File',
'path' => runtime_path('cache/'), // 推荐用 runtime_path() 动态生成,避免硬编码
],
],
];
Redis 驱动的关键字段不能遗漏
若用 Redis,'host' 和 'port' 是强制项,少一个都会导致 Cache::get() 静默返回 null,无连接错误提示:
-
'host':IP 地址(如'127.0.0.1'),不能留空或写错格式 -
'port':端口号(如6379),必须是整数,不能是字符串 -
'prefix':建议加业务前缀(如'myapp:'),防键名冲突 -
'serialize':可选,设为['php', 'json']控制序列化方式(默认 php)
示例片段:
'redis' => [
'type' => 'redis',
'host' => '127.0.0.1',
'port' => 6379,
'password' => '',
'prefix' => 'myapp:',
'expire' => 3600,
],
缓存前缀与有效期要写对位置
通用参数如 'prefix'、'expire' 必须放在具体 store 的配置里,不是顶层:
- ❌ 错误写法:
'prefix' => 'user_'写在return []顶层 —— 不生效 - ✅ 正确写法:
'prefix'放在'stores'['file']或'stores'['redis']内部 -
'expire'是整数秒(如7200),不能写成字符串'7200'或空值
多驱动共存时 default 要对应 stores 键名
如果同时配置了 'file' 和 'redis',想让 Redis 作默认,就写:
'type' => 'redis',
'default' => 'redis',
'stores' => [
'file' => [ /* ... */ ],
'redis' => [ /* ... */ ],
],
调用 Cache::set('key', $val) 时就会自动走 Redis;也可显式指定:Cache::store('file')->set(...)。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











