谈谈系统中的缓存预热-@PostConstruct

说起缓存,相信大家都不陌生,下面我们先看这张图
在这里插入图片描述
上图是一个最简单的应用系统业务流转模型,当一个客户端连接到server时,需要做数据访问,在server中会判断是否已经在缓存中,如果在则直接在缓存中拿出数据返回,由于缓存是在内存中的(比如redis,mongo,sping-cache等),不用大批量的跟数据库进行交互,避免了大量io操作,大大提高效率。

下面,我们来考虑一个问题,可以设想下如下场景:
当应用启动起来的瞬间,n(非常大)个用户访问尽量,都访问同一波热点数据,这种情况很可能导致,数据库承受不了大量io导致数据库瞬间瘫痪。

为了避免这个情况,出现了缓存预热这个解决方案,当然实现方式有很多中,核心思想都是在应用启动的过程中将数据写进缓存系统中,从而使使用过程中可以直接提高系统的缓存命中率(当然不可能将所有的数据全部写进缓存中),减少数据库jdbc操作。

下面主要来说说使用@PostConstruct来实现我们的缓存预热。
从Java EE5规范开始,Servlet中增加了两个影响Servlet生命周期的注解,@PostConstruct和@PreDestroy,这两个注解被用来修饰一个非静态的void()方法。

在spring的bean生命周期中,被@PostConstruct的方法会在实例初始化完成后执行&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值