【Redis】缓存三件套:缓存雪崩+缓存穿透+缓存击穿

目录

一、缓存雪崩

1.1 缓存雪崩的概念

1.2 如何解决缓存雪崩问题?

二、缓存击穿

2.1 缓存击穿的概念

2.2 解决缓存击穿

三、缓存穿透

3.1 缓存穿透

3.2 解决缓存穿透


一、缓存雪崩

1.1 缓存雪崩的概念

缓存雪崩是指在短时间内,有大量缓存同时过期,导致大量的请求直接查询数据库,从而对数据库造成了巨大的压力,严重情况下可能会导致数据库宕机的情况叫做缓存雪崩。

我们先来看下正常情况下和缓存雪崩时程序的执行流程图,正常情况下系统的执行流程如下图所示:

【Redis】缓存三件套:缓存雪崩+缓存穿透+缓存击穿_第1张图片

缓存雪崩的执行流程,如下图所示:

【Redis】缓存三件套:缓存雪崩+缓存穿透+缓存击穿_第2张图片

以上对比图可以看出缓存雪崩对系统造成的影响,导致缓存雪崩的主要原因有以下几个:

  1. 缓存过期时间设置不合理:当大量缓存数据在同一时间失效时,会导致大量请求直接打到数据库或者后端服务。

  2. 缓存服务器故障:如果缓存服务器发生故障,无法提供缓存服务,那么所有请求将直接访问数据库或者后端服务。

  3. 缓存数据的热点分布不均匀:如果某些热门数据集中在一部分缓存节点上,当这些节点发生故障或者数据失效时,会导致请求直接打到数据库或者后端服务。

1.2 如何解决缓存雪崩问题?

缓存雪崩的常见解决方案有以下几个:

  1. 随机生成缓存过期时间:随机生成缓存过期时间,可以避免缓存同时过期,从而避免雪崩问题的发生。

你可能感兴趣的:(Redis,缓存,redis,面试)