彻底删除thinkphp 5.1缓存需按驱动类型分别清理:file驱动清空runtime/cache目录;redis驱动执行flushdb;memcache调用flush或重启;apc/opcache需重启web服务器。

ThinkPHP 5.1 中要彻底删除缓存、避免残留,关键在于**清除所有缓存驱动对应的实际存储位置**,而不仅仅是调用 Cache::clear() 或 cache(null) —— 这些方法在某些配置下可能只清空当前驱动的“逻辑缓存”,不保证物理文件或第三方服务中的数据被删干净。
确认当前使用的缓存驱动类型
TP5.1 支持 file、redis、memcache、apc 等多种驱动,默认是 file。先查配置(config/cache.php)中的 'type' 值,再针对性清理:
-
file 驱动:缓存写入
runtime/cache/目录(含子目录),需手动清空该目录下所有文件和子文件夹 -
redis 驱动:缓存存在 Redis 实例中,需执行
FLUSHDB(清当前 DB)或FLUSHALL(清全部 DB) -
memcache 驱动:调用
$memcache->flush()或重启服务(无原生 flush 命令时最可靠) - apc/opcache:属于 PHP 运行时缓存,需重启 Web 服务器(如 Apache/Nginx + PHP-FPM)才生效
安全清空 file 缓存的实操步骤
仅靠 cache(null) 可能跳过部分命名空间或未加载的缓存项。推荐组合操作:
- 执行
php think clear命令(内置命令,会清 runtime/cache、runtime/log、runtime/temp 等) - 手动进入
runtime/cache/,删除全部内容(Linux 下可用rm -rf cache/*;Windows 可直接清空文件夹) - 检查
config/cache.php中是否启用了'prefix'或多级'path',确保子目录也被覆盖清理
Redis 缓存必须显式刷新
TP5.1 的 Cache::clear() 在 Redis 驱动下默认只清带有当前前缀(prefix)的 key,若你改过配置、换过环境、或 prefix 为空,就可能漏删。稳妥做法:
- 连接 Redis CLI:
redis-cli -h 127.0.0.1 -p 6379 - 切换到对应 DB(如 DB 0):
SELECT 0 - 执行
FLUSHDB(推荐)或FLUSHALL(谨慎,影响其他应用) - 验证是否清空:
KEYS *应返回空数组(注意:生产环境慎用 KEYS)
避免缓存残留的开发习惯
彻底 ≠ 一次性,而是建立可重复、可验证的清理机制:
- 上线前或调试时,统一用
php think clear && redis-cli FLUSHDB脚本化清理 - 禁用缓存临时调试:在
config/cache.php中设'type' => 'null'(空驱动,完全绕过缓存) - 自定义缓存 key 时加上版本号或环境标识(如
user:info:v2:{$id}),升级时自动失效旧缓存 - 不要依赖
cache(false)关闭缓存——它只对当前请求有效,不清理已有缓存
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











