thinkphp 6 启用 redis 缓存需四步:一、安装并启用 php redis 扩展;二、composer require topthink/think-redis;三、完整配置 cache.php 中 stores.redis 参数;四、合理设置 prefix 并通过命令行验证读写。

如果您尝试在 ThinkPHP 项目中启用 Redis 缓存驱动,但 Cache::get() 始终返回 null 或抛出 ClassNotFoundException 异常,则可能是由于驱动未正确注册、PHP 扩展缺失或配置项不完整所致。以下是解决此问题的步骤:
一、安装并启用 PHP Redis 扩展
ThinkPHP 6 的 Redis 缓存驱动依赖 PHP 原生 redis 扩展(非 predis 或 phpredis 别名),而非仅 Composer 包。缺少该扩展会导致 Class 'Redis' not found 错误。
1、执行 php -m | grep redis 检查扩展是否已加载(Linux/macOS);Windows 用户需查看 phpinfo() 页面确认 redis 模块存在。
2、若无输出,需安装扩展:使用 pecl install redis,并在 php.ini 中添加 extension=redis.so(Linux)或 extension=php_redis.dll(Windows)。
3、重启 Web 服务器(如 Apache 或 Nginx)及 PHP-FPM 进程,使扩展生效。
二、安装 topthink/think-redis 扩展包
TP6 默认不内置 Redis 驱动类,必须通过 Composer 安装官方适配器,否则调用 Cache::store('redis') 会报 Driver [redis] not supported。
1、在项目根目录运行 composer require topthink/think-redis。
2、确认 vendor/topthink/think-redis/src/Driver.php 文件存在且可被自动加载。
3、检查 composer.json 中是否已写入 "topthink/think-redis": "^3.0" 依赖项。
三、配置 cache.php 中的 Redis store
仅修改 default 为 'redis' 不足以启用驱动,必须显式定义 stores.redis 配置块,且所有连接参数需与实际 Redis 实例严格一致,否则将静默降级为 file 驱动。
1、打开 config/cache.php,将 'default' => 'redis' 设置为字符串小写形式。
2、在 'stores' => [] 数组内添加完整的 redis 键,确保包含:'host'、'port'、'password'、'select'(整数,不可为字符串"0")、'timeout'、'expire'。
3、示例配置段中 'select' => 0 必须为整型,'password' => '' 即使为空也需显式声明,否则连接可能被拒绝。
四、关闭或自定义缓存 key 前缀
ThinkPHP 默认为所有缓存 key 添加 think: 前缀,这会导致使用 redis-cli 直接查询时无法命中,也易与其它服务共用 Redis 时发生键名冲突。
1、如需禁用前缀,在 stores.redis 配置中添加 'prefix' => ''。
2、如需自定义前缀以实现多项目隔离,设为 'prefix' => 'shop:'(注意结尾冒号规范)。
3、注意该配置仅影响 Cache::get() / cache() 等门面调用,手动使用 Redis::set() 写入的 key 不受此控制。
五、验证缓存驱动是否真正生效
避免依赖日志或现象推测,应通过命令行直接触发读写操作,确认底层连接与序列化逻辑均正常工作。
1、执行 php -r "var_dump(cache('test_key', 'test_value', 10));",预期输出 string(12) "test_value"。
2、立即执行 php -r "var_dump(cache('test_key'));",应返回相同字符串,证明写入与读取通路完整。
3、登录 Redis CLI,运行 get 'think:test_key'(若 prefix 未清空)或 get 'test_key'(若 prefix 已清空),确认值真实存在于 Redis 中。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











