Redis缓存穿透的解决策略有哪些?

更新于
2026-10-09 06:34:01
0阅读来源:SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计2622个文字,预计阅读时间需要11分钟。

Redis缓存穿透的解决策略有哪些?

Redis缓存主要涉及缓存穿透、缓存击穿与缓存雪崩异常场景,今天我们来聊聊缓存穿透。缓存穿透是指客户端请求一个不存在的数据,由于缓存中没有该数据,每次请求都会落到数据库上,导致数据库压力增大。

场景描述:缓存穿透是指客户端请求一个数据库中不存在的key,导致每次请求都会查询数据库。

缓存穿透的解决方案:

1.使用布隆过滤器:在查询数据库之前,先通过布隆过滤器判断key是否可能存在,从而避免对数据库的查询。

2.使用空对象缓存:将不存在的key缓存为一个空对象,避免后续请求直接查询数据库。

3.使用数据库查询缓存:在数据库查询时,将结果缓存起来,下次查询相同的数据时直接从缓存中获取。

Redis 缓存主要缓存穿透、缓存击穿与缓存雪崩异常场景,今天我们来讲讲缓存穿透。

1 场景描述

缓存穿透是指客户端请求一个缓存和数据库中都不存在的 key。由于缓存中不存在,所以请求会透过缓存查询数据库;由于数据库中也不存在,所以也没办法更新缓存。因此下一次同样的请求还是会打在数据库上。

好像缓存被穿透了一样,缓存形如虚设。所有的压力都在数据库之上,如果请求量巨大,可能造成数据库崩溃。

2 解决方法

缓存穿透有以下几种解决方法。

2.1 接口校验

在请求入口进行校验,比如对用户进行鉴权、数据合法性检查等操作,这样可以减少缓存穿透发生的概率。

这种方式减轻了对 Redis 以及数据库的压力,但是增加了客户端的编码与维护的工作量。如果请求的入口很多,那么工作量很大。

2.2 缓存空值

当缓存与数据库中都没有 key 时,就设置一个空值写入缓存,并同时设置一个比较短的过期时间。由于在缓存中设置空值,所以请求在缓存这一级别就返回,也就不会被穿透。

阅读全文
标签:解决

本文共计2622个文字,预计阅读时间需要11分钟。

Redis缓存穿透的解决策略有哪些?

Redis缓存主要涉及缓存穿透、缓存击穿与缓存雪崩异常场景,今天我们来聊聊缓存穿透。缓存穿透是指客户端请求一个不存在的数据,由于缓存中没有该数据,每次请求都会落到数据库上,导致数据库压力增大。

场景描述:缓存穿透是指客户端请求一个数据库中不存在的key,导致每次请求都会查询数据库。

缓存穿透的解决方案:

1.使用布隆过滤器:在查询数据库之前,先通过布隆过滤器判断key是否可能存在,从而避免对数据库的查询。

2.使用空对象缓存:将不存在的key缓存为一个空对象,避免后续请求直接查询数据库。

3.使用数据库查询缓存:在数据库查询时,将结果缓存起来,下次查询相同的数据时直接从缓存中获取。

Redis 缓存主要缓存穿透、缓存击穿与缓存雪崩异常场景,今天我们来讲讲缓存穿透。

1 场景描述

缓存穿透是指客户端请求一个缓存和数据库中都不存在的 key。由于缓存中不存在,所以请求会透过缓存查询数据库;由于数据库中也不存在,所以也没办法更新缓存。因此下一次同样的请求还是会打在数据库上。

好像缓存被穿透了一样,缓存形如虚设。所有的压力都在数据库之上,如果请求量巨大,可能造成数据库崩溃。

2 解决方法

缓存穿透有以下几种解决方法。

2.1 接口校验

在请求入口进行校验,比如对用户进行鉴权、数据合法性检查等操作,这样可以减少缓存穿透发生的概率。

这种方式减轻了对 Redis 以及数据库的压力,但是增加了客户端的编码与维护的工作量。如果请求的入口很多,那么工作量很大。

2.2 缓存空值

当缓存与数据库中都没有 key 时,就设置一个空值写入缓存,并同时设置一个比较短的过期时间。由于在缓存中设置空值,所以请求在缓存这一级别就返回,也就不会被穿透。

阅读全文
标签:解决