专栏名称: 芋道源码
纯 Java 源码分享公众号,目前有「Dubbo」「SpringCloud」「Java 并发」「RocketMQ」「Sharding-JDBC」「MyCAT」「Elastic-Job」「SkyWalking」「Spring」等等
目录
相关文章推荐
芋道源码  ·  为什么有些程序员上班时总是戴着耳机? ·  14 小时前  
芋道源码  ·  手把手教你实现一个Java Agent ·  14 小时前  
ImportNew  ·  亚马逊程序员破防:AI ... ·  2 天前  
芋道源码  ·  2W字全面剖析 Mybatis 中的9种设计模式 ·  2 天前  
51好读  ›  专栏  ›  芋道源码

第一次使用缓存,因为没预热,翻车了

芋道源码  · 公众号  · Java  · 2025-04-23 09:30

正文

请到「今天看啥」查看全文


  • 应用启动时预热
  • 使用@PostConstruct注解
  • 定时任务预热
  • 缓存器预热

  • 预热一般指缓存预热,一般用在高并发系统中,为了提升系统在高并发情况下的稳定性的一种手段。

    缓存预热是指在系统启动之前或系统达到高峰期之前,通过预先将常用数据加载到缓存中,以提高缓存命中率和系统性能的过程。缓存预热的目的是尽可能地避免缓存击穿和缓存雪崩,还可以减轻后端存储系统的负载,提高系统的响应速度和吞吐量。

    预热的必要性

    缓存预热的好处有很多,如:

    1. 减少冷启动影响:当系统重启或新启动时,缓存是空的,这被称为冷启动。冷启动可能导致首次请求处理缓慢,因为数据需要从慢速存储(如数据库)检索。
    2. 提高数据访问速度:通过预先加载常用数据到缓存中,可以确保数据快速可用,从而加快数据访问速度。
    3. 平滑流量峰值:在流量高峰期之前预热缓存可以帮助系统更好地处理高流量,避免在流量激增时出现性能下降。
    4. 保证数据的时效性:定期预热可以保证缓存中的数据是最新的,特别是对于高度依赖于实时数据的系统。
    5. 减少对后端系统的压力:通过缓存预热,可以减少对数据库或其他后端服务的直接查询,从而减轻它们的负载。

    基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

    • 项目地址:https://github.com/YunaiV/ruoyi-vue-pro
    • 视频教程:https://doc.iocoder.cn/video/

    预热的方法

    缓存预热的一般做法是在系统启动或系统空闲期间,将常用的数据加载到缓存中,主要做法有以下几种:

    系统启动时加载 :在系统启动时,将常用的数据加载到缓存中,以便后续的访问可以直接从缓存中获取。

    定时任务加载 :定时执行任务,将常用的数据加载到缓存中,以保持缓存中数据的实时性和准确性。

    手动触发加载 :在系统达到高峰期之前,手动触发加载常用数据到缓存中,以提高缓存命中率和系统性能。

    用时加载 :在用户请求到来时,根据用户的访问模式和业务需求,动态地将数据加载到缓存中。

    缓存加载器 :一些缓存框架提供了缓存加载器的机制,可以在缓存中不存在数据时,自动调用加载器加载数据到缓存中。







    请到「今天看啥」查看全文