driver [redis] not supported错误源于tp6未内置redis驱动,必须执行composer require topthink/think-redis安装扩展、确保config/cache.php中default='redis'且stores.redis.type='redis'、清除配置缓存php think cache:clear。

Cache::store('redis') 报 Driver [redis] not supported 怎么办
根本原因不是配置错,而是驱动压根没加载。TP6 默认只带 File 和 Array 驱动,redis 驱动必须手动装扩展并注册。
- 执行
composer require topthink/think-redis(不是phpredis或predis) - 检查
config/cache.php中default是否明确设为'redis',不能是空或注释掉 - 确认
stores.redis.type是'redis',不是'\think\cache\driver\Redis'(TP6.3+ 已简化为字符串) - CLI 环境下运行
php think cache:clear清掉配置缓存,避免旧配置残留
Cache::remember() 和手写 get()+set() 哪个更安全
高并发下必须用 Cache::remember(),手写逻辑有竞态窗口,容易穿透数据库。
-
Cache::remember('user_123', 3600, function () { return Db::name('user')->find(123); });—— 查、存、返三步原子完成 - 手写
if (!Cache::get($key)) { $data = Db::find(); Cache::set($key, $data, 3600); }—— 两个请求同时进来,都判断为 miss,都会查库 - 闭包里别调用日志、发消息等副作用操作,否则每次缓存失效都会触发一次
- 如果需要控制序列化方式或前缀,改
stores.redis.prefix,别在业务层拼 key
缓存 key 查不到,但 redis-cli 能看到数据
大概率是前缀不一致。TP 的 Cache 类默认加了前缀,而原生 Redis 操作没加。
Redis 缓存和数据结构管理技能。通过自然语言操作 Redis,支持 String、Hash、List、Set、ZSet、Stream 等数据结构操作。当用户提到 Redis、缓存、消息队列、会话存储时使用此技能。
-
Cache::store('redis')->get('user_123')实际查的是think:cache:user_123(取决于stores.redis.prefix配置) - 用
redis-cli -h 127.0.0.1 ping确认连通后,执行keys *user_123*看真实 key 名 - 命令行任务里用
new \Redis()写入,Web 请求用Cache::get()读不到——因为前者没加前缀,后者强制加了 - 想临时验证,可临时把
stores.redis.prefix改为空字符串,但上线前务必改回去,否则会污染其他组件缓存
expire=0 和 expire=null 在 Redis 缓存里效果一样吗
完全不一样。传 0 会走框架默认过期时间(通常是 3600 秒),传 null 才是真正永不过期(PERSIST)。
-
Cache::set('key', 'val', 0)→ 实际调用SETEX,TTL 取stores.redis.expire值(默认 3600) -
Cache::set('key', 'val', null)→ 先SET,再对已存在 key 发PERSIST;若 key 是新写的,PERSIST无效 - 前端传参带
expire=0,后端直接透传给Cache::set(),结果缓存一小时就失效——这不是 bug,是语义误用 - 真要新建 key 就永久存在,得用
Redis::instance()->setEx()分步控制,或先set再persist
最易被忽略的点:缓存失效策略和 key 设计是耦合的。比如用 user_123_profile 和 user_123_permission 两个 key 存同一用户不同数据,更新权限时只删 permission key,profile 还在,但可能已不一致——这种场景更适合用哈希结构(HSET user:123 profile ... permission ...)统一管理。Redis 不是黑盒,得按它的数据模型来组织业务逻辑。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










