thinkphp 5.1 提供三类批量删除缓存方式:按标签清除(cache::clear('tag'))、命令行清理(如php think clear --cache)、调用cache::clear()按驱动清空;手动删目录仅作兜底,推荐优先使用框架内置方法。

ThinkPHP 5.1 提供了多种方式批量删除缓存,关键看你想清哪一类、清多大范围——是按标签归类清除,还是按目录物理删除,又或是用命令行一键清理。下面分三类讲清楚,直接可用。
按标签批量删除缓存
适合业务中已用 Cache::tag() 对缓存做了逻辑分组的场景,比如「用户相关」「商品列表」「配置项」各自打上不同标签。删一个标签,所有归属它的缓存条目全清掉,不影响其他缓存。
- 给多个缓存打同一标签:
Cache::set('user_1001', ['name' => '张三'], 3600);<br>Cache::set('user_1002', ['name' => '李四'], 3600);<br>Cache::tag('user')->set('user_1001', ['name' => '张三']);<br>Cache::tag('user')->set('user_1002', ['name' => '李四']);
- 批量清除该标签下所有缓存:
Cache::clear('user');
- 注意:标签清除只对用
Cache::tag(...)->set()或Cache::tag(...)->remember()写入的缓存生效;直接Cache::set()的缓存不归属任何标签,不会被影响。
用命令行快速清空指定类型缓存
适用于开发调试或部署后快速重置环境,无需写代码、不依赖页面请求,执行即生效。TP5.1.10+ 支持细分清理:
- 清空全部 runtime 下的缓存文件(含模板、日志等):
php think clear - 仅清数据缓存目录(
runtime/cache/):php think clear --cache - 仅清模板缓存(
runtime/temp/):php think clear --temp - 仅清日志(
runtime/log/):php think clear --log - 清路由缓存(v5.1.14+):
php think clear --route - 加
--dir可连空目录一起删(慎用):php think clear --cache --dir
推荐日常开发用 php think clear --cache,快且安全,不影响模板和日志。
手动清空整个缓存目录(物理删除)
当缓存机制异常、文件损坏,或需要彻底“归零”时使用。本质是递归删除 runtime/cache/ 文件夹内所有内容。
- 可封装成控制器方法(带前端确认):
public function clear_cache() {<br> $path = RUNTIME_PATH . 'cache/';<br> if (is_dir($path)) {<br> array_map('unlink', glob($path . '*'));<br> @rmdir($path);<br> mkdir($path, 0755, true);<br> }<br> $this->success('缓存已清空');<br>}
- 更稳妥的做法是复用框架自带的清除函数:
在控制器中调用Cache::clear(),它会按当前缓存驱动(如 File/Redis)清空对应存储,比手动删目录更兼容多驱动环境。 - 注意:如果用了 Redis 缓存,
Cache::clear()清的是 Redis 中的数据;若同时用了 File 和 Redis,需分别调用Cache::store('file')->clear()和Cache::store('redis')->clear()。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











