✅什么是预热?它有何作用?

典型回答

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

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

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

比如秒杀商品、大促活动等,这些是可以提前预知哪些key会变成热key的,所以就可以做提前的预热。

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

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

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

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

缓存预热是一种提高高并发系统性能和可靠性的重要方法,通过预先将常用的数据加载到缓存中,避免缓存击穿和缓存雪崩等问题,从而保证系统的稳定性和可靠性。

✅什么是缓存击穿、缓存穿透、缓存雪崩?

扩展知识

缓存预热的方法

在进行缓存预热时,有一些工具可供使用。常见的是以下这几个:

✅如何实现缓存的预热?

如果要自己实现本地缓存的预热,可以看上面的文章,如果要给redis预热,可以看下面的:

RedisBloom:RedisBloom是Redis的一个模块,提供了多个数据结构,包括布隆过滤器、计数器、和TopK数据结构等。其中,布隆过滤器可以用于Redis缓存预热,通过将预热数据添加到布隆过滤器中,可以快速判断一个键是否存在于缓存中。(https://oss.redislabs.com/redisbloom/

Redis Bulk loading:这是一个官方出的,基于Redis协议批量写入数据的工具(https://redis.io/docs/manual/patterns/bulk-loading/

Redis Desktop Manager:Redis Desktop Manager是一个图形化的Redis客户端,可以用于管理Redis数据库和进行缓存预热。通过Redis Desktop Manager,可以轻松地将预热数据批量导入到Redis缓存中。

原文: https://www.yuque.com/hollis666/xkm7k3/gr4z7dqg4evp5ubz