关闭thinkphp 3.2的redis缓存需配置'data_cache_type'为'file'或'null',并删除redis相关配置;'null'驱动彻底禁用缓存,s()函数静默返回;亦可代码级调用cache(false)临时跳过。

要关闭 ThinkPHP 3.2 的 Redis 数据缓存,本质是让框架不再使用 Redis 作为默认数据缓存驱动,转而使用其他类型(如 File)或彻底禁用缓存逻辑。注意:TP3.2 没有直接的 'DATA_CACHE_OFF' => true 这类开关,关闭需从配置和调用两个层面入手。
关闭 Redis 缓存的配置方式
在项目配置文件(通常是 Conf/config.php 或模块级 Conf/config.php)中修改以下关键项:
- 将缓存类型改为非 Redis 类型,最常用的是
File(文件缓存)或Apc/Xcache(若环境支持),也可设为Null(空驱动,不缓存):'DATA_CACHE_TYPE' => 'File', // 替换 'Redis'
- 删除或注释掉所有 Redis 相关配置,避免干扰或报错:
// 'REDIS_HOST' => '127.0.0.1', // 'REDIS_PORT' => 6379, // 'REDIS_AUTH' => 'your_password', // 'REDIS_TIMEOUT' => 300, // 'DATA_CACHE_PREFIX' => 'tp',
✅ 提示:只要
'DATA_CACHE_TYPE'不是'Redis',S() 函数、模型cache()方法等默认缓存操作就自动走新驱动,Redis 不会被初始化或连接。
彻底禁用数据缓存(不写入任何缓存)
如果目标是完全跳过缓存层(比如调试时防止脏数据干扰),可配置为空驱动:
'DATA_CACHE_TYPE' => 'Null',
TP3.2 自带 Null 驱动(位于 ThinkPHP/Library/Think/Cache/Driver/Null.class.php),它不做任何存储操作,S('key', $val) 和 S('key') 均静默返回,不报错也不生效。
补充:临时绕过缓存的代码级控制
即使全局配置了 Redis,你仍可在具体业务中主动跳过缓存:
- 查询时不启用缓存:
$list = M('user')->cache(false)->select(); // 显式关闭本次查询缓存 - 使用 S() 时避免写入(仅读取且不关心是否命中):
$data = S('my_key'); // 若已关闭 Redis,这里会走当前 DATA_CACHE_TYPE 对应驱动
验证是否关闭成功
访问一个曾使用 S() 或 cache(true) 的接口后,检查:
- Redis 服务中是否还有新 key 写入(可用
redis-cli keys "tp_*"查看); -
Runtime/Data/目录下是否有新增.php缓存文件(启用File后会有); - 在控制器中输出
C('DATA_CACHE_TYPE'),确认值为'File'或'Null'而非'Redis'。
不复杂但容易忽略
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











