讲师中心 微信公众号
AI工具推荐 视频效率加速

TP5升8数据缓存清空操作完整法

小芳大大_5605

小芳大大_5605

发布时间:2026-09-04 12:41:49

|

368人浏览过

|

来源于php中文网

原创

php think clear --all 清不干净,因其仅清除驱动级缓存(如 runtime/cache/ 文件及 Redis 中带默认 prefix 的 key),但不处理模型查询缓存、模板编译缓存(需 -t 或 clear:template)、字段结构缓存(需 Db::clearCache())、自定义 store 及标签缓存(依赖驱动支持)。

tp5升8数据缓存清空操作完整法

php think clear --all 为什么清不干净

因为 php think clear --all 只清驱动级缓存(如 runtime/cache/ 下的文件、Redis 中带默认 prefix 的 key),但完全不碰以下几类:

  • 模型查询缓存:比如 UserModel::where()->cache(true)->select() 生成的缓存 key 不走统一 prefix,也不进标签系统
  • 模板编译缓存:存在 runtime/view/,必须加 -t 或用 php think clear:template(TP6.1+ 支持,TP5 没这个命令)
  • 字段结构缓存:存于 runtime/schema/ 或 runtime/temp/,得手动调 \think\facade\Db::clearCache()
  • 自定义 store 缓存:如 Cache::store('my_redis'),clear() 默认不作用于它,除非显式调用 ->clear()

代码里调 Cache::clear() 没反应?先查这三件事

不是 API 写错了,而是运行时环境没对上:

  • 确认当前生效的缓存配置:检查 config/cache.php 中 default 值,以及 stores['file']['path'] 是否被 .env 覆盖(例如写了 CACHE_PATH=/tmp/my_cache 却没同步到配置)
  • 别依赖默认 store:显式指定驱动名,比如 Cache::store('file')->clear(),避免容器未初始化或 fallback 到 Null 驱动
  • 验证是否真删了:执行后立刻跑 var_dump(file_exists(runtime_path() . 'cache/xxx.php')) 或 Redis 里 exists think_user_123,别只信 Cache::clear() 返回 true

标签缓存清不掉?驱动和配置都得对上

Cache::tag('user')->clear() 失效,通常不是调用问题,而是底层没穿透:

  • 确认驱动支持标签:只有 file、redis、memcached 实现了完整标签清理;apc、wincache 调了也白调
  • 检查 tag_prefix 配置:Redis 下必须设 'tag_prefix' => 'tp_tag:',否则索引 key(如 tp_tag:user)和实际数据 key 对不上
  • 手动兜底(Redis 场景):用 scan 0 tp_tag:user:* count 1000 查索引,再逐个 smembers 取真实 key,删完再删索引本身——别用 keys,线上会卡住

线上不敢删 runtime/?绕过比清除更安全

最稳妥的验证方式不是“清”,而是“绕过”:

  • 临时把 config/cache.php 里的 default 改成 'null',重启服务,看异常是否消失
  • 如果用了 Redis,可临时改 host 为一个无效地址(如 127.0.0.9),让缓存自动降级,比删目录风险低得多
  • 改完立刻测接口,别等缓存自然过期——有些业务缓存有效期设的是 7 天

标签清理和模型缓存清理是两套逻辑,混着清容易漏关键点;TP8 的 Cache::clear() 默认不触发模型层的缓存失效,这点最容易被忽略。

热门AI工具

更多
讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

相关专题

更多
Playwright 测试失败怎么办
Playwright 测试失败怎么办

Playwright测试失败专题汇集超时、定位器匹配、浏览器提前关闭、依赖与插件配置、文件上传、SSL及Docker启动等故障文章,并介绍通过截图、报告和Trace定位错误。

0

2026.10.21

Playwright 页面操作指南
Playwright 页面操作指南

Playwright页面操作专题汇集元素定位、点击与输入、等待响应、多页面切换、Iframe、事件监听及文件处理的已审核文章,便于按操作场景查阅示例与常见问题。

0

2026.10.21

Playwright 入门教程
Playwright 入门教程

Playwright入门专题汇集测试框架安装、VS Code配置、录制脚本、编写首个用例、运行调试及查看报告的已审核文章,帮助初学者搭建端到端测试流程。

0

2026.10.21

OpenJDK JVM参数怎么调优
OpenJDK JVM参数怎么调优

Java应用运行缓慢,如何调整JVM参数?本专题介绍OpenJDK JVM性能调优的基本流程,涵盖性能指标确认、运行数据采集、内存配置和垃圾回收分析,帮助你先定位瓶颈,再通过对照测试验证效果,避免直接套用参数而影响应用稳定性。

100

2026.10.16

OpenJDK怎么配置Java开发环境
OpenJDK怎么配置Java开发环境

怎样用OpenJDK搭建开发环境?本专题介绍版本选择、下载安装、环境变量配置和编译运行验证,帮助你理清JDK的作用及基本配置流程,并通过简单程序检查环境是否可用,为后续项目开发做好准备。

80

2026.10.16

OpenJDK怎么部署Java应用
OpenJDK怎么部署Java应用

Java项目开发完成后,怎样部署到目标环境并正常运行?本专题介绍OpenJDK应用部署流程,涵盖运行环境准备、版本兼容检查、应用打包、启动参数配置和日志查看,帮助你理清部署前后的操作顺序,减少环境差异造成的运行问题。

40

2026.10.16

Revel框架模板渲染与表单验证
Revel框架模板渲染与表单验证

本专题围绕Revel框架视图层开发,介绍模板语法、变量输出、布局复用、表单提交、参数绑定与验证规则,帮助开发者完成安全规范的页面交互。

40

2026.10.16

Revel框架MVC路由与控制器
Revel框架MVC路由与控制器

本专题聚焦Revel框架MVC核心机制,讲解路由定义、控制器Action、参数绑定、请求响应和反向路由,并结合常见场景梳理接口请求处理流程。

20

2026.10.16

Revel框架入门与安装配置
Revel框架入门与安装配置

本专题从Revel框架环境搭建讲起,系统介绍命令行工具安装、项目创建、目录结构、配置文件及热代码重载,帮助开发者快速完成首个Go Web应用。

40

2026.10.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
ThinkPHP8.0完全开发手册
ThinkPHP8.0完全开发手册

共0课时 | 0人学习

ThinkPHP5基础讲解视频教程
ThinkPHP5基础讲解视频教程

共38课时 | 15.2万人学习

THINKPHP 5.0 手册最新版
THINKPHP 5.0 手册最新版

共213课时 | 55.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn