千家信息网

redis缓存穿透的解决方法

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要介绍redis缓存穿透的解决方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!缓存技术可以用来减轻数据库的压力,提升访问效率。目前在企业项目中对缓存也是越来越重视。
千家信息网最后更新 2026年10月31日redis缓存穿透的解决方法

这篇文章主要介绍redis缓存穿透的解决方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

缓存技术可以用来减轻数据库的压力,提升访问效率。目前在企业项目中对缓存也是越来越重视。但是缓存不是说随随便便加入项目就可以了。将缓存整合到项目中,这才是第一步。而缓存带来的穿透问题,进而导致的雪蹦问题都是我们迫切需要解决的问题。本篇文章将我平时项目中的解决方案分享给大家,以供参考。

一、缓存穿透的原理

缓存的正常使用如图:

如图所示,缓存的使用流程:

1、先从缓存中取数据,如果能取到,则直接返回数据给用户。这样不用访问数据库,减轻数据库的压力。

2、如果缓存中没有数据,就会访问数据库。

这里面就会存在一个BUG,如图:

如图,缓存就像是数据库的一道防火墙,将请求比较频繁的数据放到缓存中,从而减轻数据库的压力。 但是如果有人恶意攻击,那就很轻松的穿透你的缓存,将所有的压力都给数据库。比如上图,你缓存的key都是正整数,但是我偏偏使用负数作为key访问你的缓存,这样就会导致穿透缓存,将压力直接给数据库。

二、导致缓存穿透的原因

缓存穿透的问题,肯定是再大并发情况下。依此为前提,我们分析缓存穿透的原因如下:

1、恶意攻击,猜测你的key命名方式,然后估计使用一个你缓存中不会有的key进行访问。

2、第一次数据访问,这时缓存中还没有数据,则并发场景下,所有的请求都会压到数据库。

3、数据库的数据也是空,这样即使访问了数据库,也是获取不到数据,那么缓存中肯定也没有对应的数据。这样也会导致穿透。

三、解决缓存穿透

缓存穿透在于一步步规避穿透的原因,如图:

如上图所示,解决的步骤如下:

  • 1、再web服务器启动时,提前将有可能被频繁并发访问的数据写入缓存。-这样就规避大量的请求在第3步出现排队阻塞。

  • 2、规范key的命名,并且统一缓存查询和写入的入口。这样,在入口处,对key的规范进行检测。-这样保存恶意的key被拦截。

  • 3、Synchronized双重检测机制,这时我们就需要使用同步(Synchronized)机制,在同步代码块前查询一下缓存是否存在对应的key,然后同步代码块里面再次查询缓存里是否有要查询的key。 这样"双重检测"的目的,还是避免并发场景下导致的没有意义的数据库的访问(也是一种严格避免穿透的方案)。

    这一步会导致排队,但是第一步中我们说过,为了避免大量的排队,可以提前将可以预知的大量请求提前写入缓存。

  • 4、不管数据库中是否有数据,都在缓存中保存对应的key,值为空就行。-这样是为了避免数据库中没有这个数据,导致的平凡穿透缓存对数据库进行访问。

  • 5、第4步中的空值如果太多,也会导致内存耗尽。导致不必要的内存消耗。这样就要定期的清理空值的key。避免内存被恶意占满。导致正常的功能不能缓存数据。

以上是redis缓存穿透的解决方法的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

缓存 数据 穿透 数据库 压力 如图 恶意 问题 项目 查询 内存 原因 同步 检测 方法 频繁 上图 代码 入口 内容 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技产业 重生之互联网科技帝国 互联网和科技技术 美国互联网保险保险科技 金融科技创新监管互联网金融 鑫亿盛互联网科技 科技创新互联网企业 互联网科技的未来发展 玖二柒互联网科技公司待遇 常德市电业局互联网科技部 成都铂石互联网科技做什么的 武汉健翔互联网络科技有限公司 黑科技闪耀互联网之光 济南有互联网科技公司吗 黑科技 体验场景 互联网大会 互联网第三次科技革命特征 济南小医互联网科技有限公司招聘 普陀区互联网教育科技管理办法 科技互联网经济论坛 恒生科技互联网指数十大成分股 互联网科技工作委员会副主任毛军 云信互联网科技有限公司 科技和互联网公司 互联网科技股票 上海万想互联网科技 互联网高科技股票 互联网系的金融科技公司 搜狐科技互联网 迪庆互联网科技招生 广东鹅鹅鹅互联网科技有限公司
0