ThinkPHP 5.1 缓存必须通过 config/cache.php 文件配置,该文件是唯一生效入口;需返回含 'type' 等必需项的标准数组,路径须可写,否则 Cache::set() 静默失败或返回 false。

ThinkPHP 5.1 的缓存必须通过 config/cache.php 文件配置,且该文件是唯一生效入口。写错位置、漏关键键或路径不可写,都会导致缓存静默失效(比如 Cache::set() 返回 false 或直接跳过)。
基础结构:必须返回标准数组
文件路径:config/cache.php,内容必须是 PHP return []; 形式,不能 echo、不能 include 其他文件、不能写逻辑判断:
return [
'type' => 'File',
'path' => '../runtime/cache/',
'prefix' => 'tp51_',
'expire' => 3600,
];
注意:'type' 是强制必填项,缺了会初始化失败并降级为空实现(不报错但不存不取)。
常用驱动的关键配置项
不同驱动需补全对应参数,否则连接失败或行为异常:
-
File 驱动:除
type外,path必须指定,且目录需存在、可写(如../runtime/cache/)。不建议用./runtime/cache(CLI 下易失效)。 -
Redis 驱动:
type设为'redis',同时提供host、port;可选password、select、timeout。连不上时get()直接返回null,无错误提示。 -
Memcached 驱动:
type为'memcached',需配置host、port、weight(默认 1)。
进阶配置:前缀、有效期与模块覆盖
这些配置能避免冲突、提升安全性、支持多模块差异化策略:
-
prefix:建议设业务前缀(如'admin_'、'api_'),防止不同模块缓存键名撞车。 -
expire:单位为秒,0表示永久有效;不设则用驱动默认值(File 默认 0,Redis 默认 0)。 - 模块级配置:在
config/[module_name]/cache.php中写同结构数组,该模块加载时自动合并/覆盖全局配置(例如前台用 File,后台用 Redis)。
常见踩坑点
- 把缓存配置写进
config.php或app.php—— TP5.1 完全不读,无效。 - 用
Cache::connect()硬编码初始化 —— 只临时生效,模型查询缓存、视图缓存等内部机制仍依赖cache.php。 -
path路径末尾没加斜杠,或用了相对路径如./runtime/cache—— File 驱动可能创建失败或写入错位。 - Redis 配置缺
host或port—— 初始化成功但后续所有操作都返回null,难排查。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











