0

0

Laravel 缓存数据智能更新的最佳实践

心靈之曲

心靈之曲

发布时间:2026-02-21 23:05:02

|

132人浏览过

|

来源于php中文网

原创

Laravel 缓存数据智能更新的最佳实践

本文介绍在用户高频交互、推荐逻辑动态变化的 laravel 应用中,如何避免全量清缓存(cache::flush())带来的性能损耗,通过事件驱动机制实现细粒度、按需更新缓存,兼顾响应速度与系统可扩展性。

本文介绍在用户高频交互、推荐逻辑动态变化的 laravel 应用中,如何避免全量清缓存(cache::flush())带来的性能损耗,通过事件驱动机制实现细粒度、按需更新缓存,兼顾响应速度与系统可扩展性。

在 Laravel 中,简单粗暴地调用 Cache::flush() 或 php artisan cache:clear 确实能“立刻生效”,但对中大型用户中心型应用(如含实时推荐、UGC 互动、多角色数据展示的站点)而言,这相当于主动放弃缓存价值——首页重载时,原本可复用的全部缓存失效,所有关联查询(如用户偏好、热门内容、个性化推荐列表)将同步击穿,造成数据库压力陡增与首屏延迟升高。

真正的高性能缓存策略,核心在于 “精准失效” + “惰性重建”。即:只清除/更新受业务变更直接影响的缓存项,并在下次请求时按需重建,而非全局重置。Laravel 原生支持的事件系统(Events & Listeners)为此提供了优雅解法。

✅ 推荐方案:事件驱动的缓存更新

以一个典型场景为例:网站首页展示「最新车型」「热门宠物」「活跃用户」三个独立模块,各自缓存 10 分钟。当管理员新增一辆车时:

  • ❌ 错误做法:Cache::flush() → 清空全部缓存 → 首页加载触发 3 次 DB 查询
  • ✅ 正确做法:触发 CarCreated 事件 → 由 UpdateCarCacheListener 仅刷新 cache.home.cars 键 → 其余模块缓存保持有效

实现步骤示例:

  1. 定义事件与监听器

    多奥淘宝客程序API免费版 F8.0
    多奥淘宝客程序API免费版 F8.0

    多奥淘宝客程序免费版拥有淘宝客站点的基本功能,手动更新少,管理简单等优点,适合刚接触网站的淘客们,或者是兼职做淘客们。同样拥有VIP版的模板引擎技 术、强大的文件缓存机制,但没有VIP版的伪原创跟自定义URL等多项创新的搜索引擎优化技术,除此之外也是一款高效的API数据系统实现无人值守全自动 化运行的淘宝客网站程序。4月3日淘宝联盟重新开放淘宝API申请,新用户也可使用了

    下载
    php artisan make:event CarCreated
    php artisan make:listener UpdateCarCacheListener --event=CarCreated
  2. 在事件中传递关键上下文

    // app/Events/CarCreated.php
    class CarCreated
    {
     public function __construct(public Car $car) {}
    }
  3. 监听器中精准操作缓存

    // app/Listeners/UpdateCarCacheListener.php
    public function handle(CarCreated $event): void
    {
     // 仅刷新首页车型列表缓存(使用标签便于批量管理)
     Cache::tags(['home', 'cars'])
          ->put('latest_cars', 
                Car::latest()->take(12)->get(), 
                now()->addMinutes(10));
    
     // 可选:触发推荐引擎重新计算相关用户画像缓存
     dispatch(new RefreshUserRecommendations($event->car->user_id));
    }
  4. 在模型中分发事件(Laravel 9+ 推荐方式)

    // app/Models/Car.php
    protected $dispatchesEvents = [
     'created' => CarCreated::class,
    ];

⚠️ 关键注意事项

  • 缓存标签(Cache Tags)慎用:Redis 不原生支持标签,Laravel 的 tag() 方法依赖额外的元数据存储(如数据库或文件),生产环境建议改用语义化键名(如 home:cars:latest)配合 Cache::forget() 精准删除;
  • 避免监听器中执行耗时操作:如需调用外部 API 或复杂计算,应转为队列任务(dispatch(new ProcessRecommendation($car))->onQueue('high'));
  • 设置合理的过期时间兜底:即使事件未触发或失败,缓存仍需自动过期(如 addMinutes(10)),防止脏数据长期滞留;
  • 监控缓存命中率:通过 Laravel Telescope 或自定义日志统计 CacheHit / CacheMiss 比例,持续优化键设计与更新逻辑。

? 总结

面向高并发、强交互的 Laravel 应用,缓存不是“设好就忘”的静态配置,而是需与业务生命周期深度耦合的动态系统。从 Cache::flush() 到事件驱动的按需更新,本质是从“防御式缓存”(靠过期被动清理)升级为“响应式缓存”(主动感知变更、精准干预)。初期开发成本略高,但随着数据规模与模块复杂度增长,其在稳定性、可维护性与性能维度的优势将指数级放大。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

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

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

333

2024.04.09

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

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

288

2024.04.09

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

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

622

2024.04.09

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

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

381

2024.04.10

laravel入门教程
laravel入门教程

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

131

2025.08.05

laravel实战教程
laravel实战教程

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

81

2025.08.05

laravel面试题
laravel面试题

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

69

2025.08.05

常用的数据库软件
常用的数据库软件

常用的数据库软件有MySQL、Oracle、SQL Server、PostgreSQL、MongoDB、Redis、Cassandra、Hadoop、Spark和Amazon DynamoDB。更多关于数据库软件的内容详情请看本专题下面的文章。php中文网欢迎大家前来学习。

998

2023.11.02

pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

928

2026.02.13

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Laravel---API接口
Laravel---API接口

共7课时 | 0.6万人学习

PHP自制框架
PHP自制框架

共8课时 | 0.6万人学习

PHP面向对象基础课程(更新中)
PHP面向对象基础课程(更新中)

共12课时 | 0.7万人学习

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

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号