IT人

当前位置:主页 > 经验教程 > 建站编程 >

如何避免缓存穿透、缓存击穿、缓存雪崩?

更新:2025-01-26 22:31:38 来源:IT人 作者:马勇
导读:如何避免缓存穿透、缓存击穿、缓存雪崩,你是不是想知道如何避免缓存穿透、缓存击穿、缓存雪崩IT技巧方面的经验,接下来小编为网友介绍。 缓存雪崩是指缓存同一时间大面积的失效,所以,后面的请求都会落

如何避免缓存穿透、缓存击穿、缓存雪崩

你是不是想知道如何避免缓存穿透、缓存击穿、缓存雪崩IT技巧方面的经验,接下来小编为网友介绍。

缓存雪崩是指缓存同一时间大面积的失效,所以,后面的请求都会落到数据库上,造成数据库短时间内承受大量请求而崩掉。

缓存雪崩解决方案:

  • 缓存数据的过期时间设置随机,防止同一时间大量数据过期现象发生。
  • 给每一个缓存数据增加相应的缓存标记,记录缓存是否失效,如果缓存标记失效,则更新数据缓存。
  • 缓存预热
  • 互斥锁

缓存穿透是指缓存和数据库中都没有的数据,导致所有的请求都落到数据库上,造成数据库短时间内承受大量请求而崩掉。

缓存穿透解决方案:

  • 接口层增加校验,如用户鉴权校验,id做基础校验,id<=0的直接拦截;
  • 从缓存取不到的数据,在数据库中也没有取到,这时也可以将key-value对写为key-null,缓存有效时间可以设置短点,如30秒(设置太长会导致正常情况也没法使用)。这样可以防止攻击用户反复用同一个id暴力攻击
  • 采用布隆过滤器,将所有可能存在的数据哈希到一个足够大的bitmap中,一个一定不存在的数据会被这个bitmap拦截掉,从而避免了对底层存储系统的查询压力

缓存击穿是指缓存中没有但数据库中有的数据(一般是缓存时间到期),这时由于并发用户特别多,同时读缓存没读到数据,又同时去数据库去取数据,引起数据库压力瞬间增大,造成过大压力。

和缓存雪崩不同的是,缓存击穿指并发查同一条数据,缓存雪崩是不同数据都过期了,很多数据都查不到从而查数据库。

如何避免缓存穿透、缓存击穿、缓存雪崩

缓存击穿解决方案

  • 设置热点数据永远不过期。
  • 加互斥锁

上述分享的如何避免缓存穿透、缓存击穿、缓存雪崩?的全部内容,您了解了吗?

相关阅读

  • 5G-Advanced关键增强功能有哪些

    5G-Advanced关键增强功能有哪些

    本文导读:5G-Advanced关键增强功能有哪些IT技巧方面的经验,接下来IT人网小编为大家介绍。 5G-Advanced作为5G技术的进一步演进,将引入一系列关键增强功能,推动通信技术向更高水平发展。 X

  • 游戏网站排行榜前十名 大型手游网络游戏介绍

    游戏网站排行榜前十名 大型手游网络游戏介绍

    本文核心内容:游戏网站排行榜前十名和大型手游网络游戏介绍方面的内容,下面小编为您详细解答 这些是最好的电子游戏评论和新闻网站,不会浪费你的时间与无关的废话 每年都有成百上千

  • 建站工具有哪些 创建自己的网站平台推荐

    建站工具有哪些 创建自己的网站平台推荐

    今天带来的IT技巧小经验建站工具有哪些和创建自己的网站平台推荐的相关经验,接下来IT人小编为大家介绍。 一、建站软件是什么? 建站软件是可以快速建立网站的系统,只要会打字,无需

  • 魔兽世界服务器查询页面 怀旧服掉落查询数据库

    魔兽世界服务器查询页面 怀旧服掉落查询数据库

    正文核心导读:魔兽世界服务器查询页面和怀旧服掉落查询数据库的内容,接下来小编为网友介绍。 今天给大家介绍一个比较有意思的魔兽自带功能,其实很多老玩家应该都是知道的,但是应