讲师中心 微信公众号
AI工具推荐 视频效率加速

Laravel自定义缓存标签_按标签批量清除缓存【操作】

星静君_7884

星静君_7884

发布时间:2026-05-04 16:39:00

|

747人浏览过

|

来源于php中文网

原创

Laravel 8+ 默认移除原生缓存标签支持,Cache::tags() 报错因底层驱动(如 file、array、redis)不再实现该方法;仅 memcached(需 igbinary 且版本 ≥3.1.5)保留有限支持,稳定方案需用 Redis 前缀模拟或引入 spatie/laravel-taggable-cache。

laravel自定义缓存标签_按标签批量清除缓存【操作】

为什么 Cache::tags() 在 Laravel 8+ 默认不可用

Laravel 8 开始,官方移除了对缓存标签(tags)的原生支持,Cache::tags() 会直接报错:Call to undefined method Illuminate\Cache\Repository::tags()。这不是你配置错了,而是底层驱动(如 file、array、redis)默认不实现标签功能 —— 只有使用 memcached 或启用 redis 的「标签模拟」时才可能支持,且需手动适配。

真正能稳定按标签批量清除的方案,得靠自己构造键名规则 + 扫描式清理,或换用支持标签的第三方驱动。

  • Redis 驱动本身不原生支持标签,Laravel 曾通过前缀+集合模拟,但该逻辑已在 8.x 被删掉
  • memcached 驱动仍保留 tags() 方法,但仅限 Memcached 扩展开启 igbinary 且版本较新(>= 3.1.5),否则标签写入失败无提示
  • 本地开发用 file 或 array 缓存时,tags() 完全不可用,调用即抛异常

用前缀模拟标签:手动管理 + Redis 扫描清理

最可控、兼容性最好的方式是放弃 Cache::tags(),改用统一前缀(如 user:123:profile、user:123:settings)标识归属,再通过 Redis 的 KEYS 或 SCAN 命令批量匹配删除。

注意:必须用 Redis 作为缓存驱动(CACHE_DRIVER=redis),且确保 redis 配置中 prefix 不为空(否则 KEY 冲突风险高)。

  • 写缓存时主动加业务前缀:Cache::put('user:'. $id .':profile', $data, 3600)
  • 清空某用户所有缓存:Redis::scan(0, 'match', 'user:'. $id .':*', 'count', 500) 循环获取 key 列表,再 Redis::del(...$keys)
  • 避免 KEYS user:123:* ——在大数据量 Redis 实例上会阻塞主线程,必须用 SCAN
  • Laravel 的 Redis facade 默认走 default 连接;若缓存和 session 用了不同 Redis DB,确认 database 配置一致

用 laravel-taggable-cache 补回标签能力

如果坚持用 Cache::tags('users')->put(...) 这种写法,可引入社区维护的 spatie/laravel-cache-tags(新版已重命名为 spatie/laravel-taggable-cache),它通过在 Redis 中额外维护一个「标签 → key 映射集合」来实现反向索引。

laravel-specialist
laravel-specialist

精通 Laravel 10+,遵循现代 PHP 实践的 Laravel 专家。擅长优雅语法、Eloquent ORM、队列系统及企业级特性...

下载

安装后需替换默认缓存驱动,并注册服务提供者:

composer require spatie/laravel-taggable-cache

然后在 config/cache.php 中将 stores.redis.driver 改为 spatie-taggable-redis,并确保 spatie/taggable-cache 的 TaggableRedisStore 已绑定到容器。

  • 每次 put() 会同时写缓存值 + 向 cache_tags:users 这类 set 添加 key
  • flushTags('users') 实际是查出所有关联 key,再批量 del,最后清空该 tag set
  • 不支持 file 或 database 驱动;Redis 必须开启 set 相关命令权限(部分云 Redis 默认禁用 SADD/SMEMBERS)
  • 高并发下存在极小概率 tag 映射漏写(比如缓存写成功但 set 操作失败),建议搭配定期巡检脚本

清缓存时最容易被忽略的两个点

批量清标签看似简单,实际在线上容易翻车的不是逻辑,而是环境细节和边界。

  • 缓存 key 是否带了 Laravel 默认的 prefix?比如配置里写了 'prefix' => 'myapp_',那真实 key 是 myapp_user:123:profile,扫描时 match 模式必须包含前缀,否则找不到
  • Cache::forget() 和 Redis::del() 行为不同:前者走完整缓存生命周期(触发 forget 事件、检查 store 实现),后者直连 Redis 绕过所有封装——混用可能导致事件监听失效或统计不准
  • 多机部署时,若用的是单节点 Redis,没问题;但用了 Redis Cluster,SCAN 不支持跨 slot,必须确保同标签的所有 key 落在同一 slot(靠 key 设计保证,例如都带 {user:123} 这样的 hash tag)

标签不是开箱即用的功能,它本质是缓存键设计 + 清理策略的组合。选哪种方式,取决于你愿不愿意为「语义清晰」多扛一层维护成本。

热门AI工具

更多
立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

相关专题

更多
laravel组件介绍
laravel组件介绍

laravel 提供了丰富的组件,包括身份验证、模板引擎、缓存、命令行工具、数据库交互、对象关系映射器、事件处理、文件操作、电子邮件发送、队列管理和数据验证。想了解更多laravel的相关内容,可以阅读本专题下面的文章。

877

2024.04.09

laravel中间件介绍
laravel中间件介绍

laravel 中间件分为五种类型:全局、路由、组、终止和自定。想了解更多laravel中间件的相关内容,可以阅读本专题下面的文章。

855

2024.04.09

laravel使用的设计模式有哪些
laravel使用的设计模式有哪些

laravel使用的设计模式有:1、单例模式;2、工厂方法模式;3、建造者模式;4、适配器模式;5、装饰器模式;6、策略模式;7、观察者模式。想了解更多laravel的相关内容,可以阅读本专题下面的文章。

2508

2024.04.09

thinkphp和laravel哪个简单
thinkphp和laravel哪个简单

对于初学者来说,laravel 的入门门槛较低,更易上手,原因包括:1. 更简单的安装和配置;2. 丰富的文档和社区支持;3. 简洁易懂的语法和 api;4. 平缓的学习曲线。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

4661

2024.04.10

laravel入门教程
laravel入门教程

本专题整合了laravel入门教程,想了解更多详细内容,请阅读专题下面的文章。

6810

2025.08.05

laravel实战教程
laravel实战教程

本专题整合了laravel实战教程,阅读专题下面的文章了解更多详细内容。

4476

2025.08.05

laravel面试题
laravel面试题

本专题整合了laravel面试题相关内容,阅读专题下面的文章了解更多详细内容。

8409

2025.08.05

PHP高性能API设计与Laravel服务架构实践
PHP高性能API设计与Laravel服务架构实践

本专题围绕 PHP 在现代 Web 后端开发中的高性能实践展开,重点讲解基于 Laravel 框架构建可扩展 API 服务的核心方法。内容涵盖路由与中间件机制、服务容器与依赖注入、接口版本管理、缓存策略设计以及队列异步处理方案。同时结合高并发场景,深入分析性能瓶颈定位与优化思路,帮助开发者构建稳定、高效、易维护的 PHP 后端服务体系。

1516

2026.03.04

Tailwind CSS 如何制作导航栏和卡片
Tailwind CSS 如何制作导航栏和卡片

用 Tailwind CSS 制作导航栏和卡片,可先搭建语义化结构,再组合 Flex、Grid、间距、圆角与阴影类。这里整理横向导航、移动端菜单、卡片网格及悬停效果的相关文章,帮助你把常见页面组件做得清晰且适配不同屏幕。

0

2026.11.03

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
如何安装 Composer
如何安装 Composer

共1课时 | 219人学习

Composer手册
Composer手册

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn