答案是file,但仅限于单机调试、低频配置读取或无并发压力的后台管理场景;它不依赖外部服务,写入runtime/cache/目录即可生效,只要目录可写且PHP进程有权限,就能稳定运行。

ThinkPHP框架缓存驱动默认用哪个比较稳——答案是file,但仅限于单机调试、低频配置读取或无并发压力的后台管理场景;它不依赖外部服务,写入runtime/cache/目录即可生效,只要目录可写且PHP进程有权限,就能稳定运行。
为什么file驱动在开发阶段最稳
第一步:确认项目根目录下 runtime/cache/ 存在且权限为755(Linux/macOS)或IIS/PHP用户有写入权限(Windows);若不存在,手动创建并赋予写权限,否则缓存写入静默失败,Cache::get()始终返回null。
第二步:检查config/cache.php中'default' => 'file'是否明确写出——别依赖.env里没定义时的隐式 fallback,TP6+ 会严格按default值路由驱动,写错大小写(如'File')直接退化为空逻辑。
第三步:避免键名含空格、斜杠、中文或控制字符;file驱动会将其转为非法文件名,写入失败却无报错;用md5($key)或只保留字母数字下划线是最简兜底方案。
立即学习“PHP免费学习笔记(深入)”;
Redis驱动稳的前提条件
方法一:启用phpredis扩展而非predis包——运行php -m | grep redis验证输出存在;若无,Linux执行pecl install redis并加extension=redis.so到php.ini,Windows需匹配PHP版本的php_redis.dll。
方法二:安装topthink/think-redis包,且确保vendor/topthink/think-redis/src/Driver.php物理存在;缺这个包,即使扩展装了,也会报Driver[redis] not supported。
【select必须为整数,不能是字符串"0"】——stores.redis.select写成'select' => "0"会导致连接成功但读写静默失败,查日志也无提示。
Memcached驱动容易踩的坑
Memcached驱动默认用文本协议通信,开销大、性能差;必须在config/cache.php的memcached配置块中显式加入'options' => [\Memcached::OPT_BINARY_PROTOCOL => true],否则高并发下响应时间反而比file还慢。
Memcached不支持TTL设为0,设0会被当成30天;想长期缓存请用2592000(30天)或更大值,别信“永久”语义。
别用memcached.hosts数组配多个节点——ThinkPHP不支持自动分片,只会轮询连接,实际只用第一个地址;真要分布式,得自己管理Memcached实例。



















