您现在的位置是:首页 > 正文

缓存穿透、缓存击穿、缓存雪崩概念及解决方案

2024-04-01 00:30:12阅读 3

缓存穿透

概念

访问一个不存在的key,缓存不起作用,请求会穿透到DB,流量大时DB会挂掉。

解决方案

  1. 采用布隆过滤器,使用一个足够大的bitmap,用于存储可能访问的key,不存在的key直接被过滤;
  2. 访问key未在DB查询到值,也将空值写进缓存,但可以设置较短过期时间。

缓存雪崩

概念

大量的key设置了相同的过期时间,导致在缓存在同一时刻全部失效,造成瞬时DB请求量大、压力骤增,引起雪崩。

解决方案

可以给缓存设置过期时间时加上一个随机值时间,使得每个key的过期时间分布开来,不会集中在同一时刻失效。

缓存击穿

概念

一个存在的key,在缓存过期的一刻,同时有大量的请求,这些请求都会击穿到DB,造成瞬时DB请求量大、压力骤增。

解决方案

在访问key之前,采用SETNX(set if not exists)来设置另一个短期key来锁住当前key的访问,访问结束再删除该短期key。

网站文章

  • python if和条件判断

    逻辑关键字==, !=, >, <, >=, <= 这些都和C一样and, or 逻辑与或in, not in 在不在列表中ifif True: print("Tru...

    2024-04-01 00:30:04
  • html5 css3 实现连线功能

    猫 height: 50px; width: 100px; border: solid 3px #f00;"> dog 狗 height: 50px; width: 100px; border: solid 3px #f00;"> cow 牛

    2024-04-01 00:29:34
  • NS3数据包时延计算-插入时间戳Tag

    NS3数据包时延计算-插入时间戳Tag

    如果要在接收端得到数据包的传输时延,那么就需要在接收端得到数据包的发送时间和数据包到达时间,后者非常简单,直接在收到包的时候Simulator::Now ().GetSeconds ()即可,而怎样得...

    2024-04-01 00:29:25
  • 山东大学计算机技术复试体验

    博主7月开始的准备考研,现在比较难受,希望大家早做准备,暑假开始复习,慎重择校。 博主是初试375分,70名,双非二本。一志愿收27个,400以上的20+,复试比接近4:1,复试线360,抱着我已经录...

    2024-04-01 00:29:18
  • LeetCode 125.验证回文串 C++

    题目描述 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。 说明:本题中,我们将空字符串定义为有效的回文串。 示例 1: 输入: "A man, a plan...

    2024-04-01 00:28:55
  • java中byte[]、buffer、string转换 热门推荐

    将原数组数据拷贝到目的数组 System.arraycopy(src, Srcposition, dst, DstPosition,dstLength); 将字节数组转换成字节缓冲区 ByteBuffer buffer = ByteBuffer.wrap(Bytes[]); 目前buffer存在的位置与buffer的容量 buffer.position() 将buffer读取

    2024-04-01 00:28:47
  • springmvc(3) 使用注解的处理器映射器和处理器适配器

    springmvc(3) 使用注解的处理器映射器和处理器适配器

    在spring3.1之前使用org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping注解映射器。 在spring3.1之后使用org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping注...

    2024-04-01 00:28:15
  • EFCore-5 Migration操作

    EFCore-5 Migration操作

    migration相关说明:使用迁移脚本,可以对当前连接的数据库执行编号更高的迁移,这个操作叫做“向上迁移”(Up),也可以执行把数据库回退到旧版本的迁移,这个操作叫做“向下迁移”(Down)。 除非...

    2024-04-01 00:28:10
  • k8s基础篇-服务发布入门

    k8s基础篇-服务发布入门

    该示例为 my-service:80 即可访问到具有 app=myapp 标签的 Pod 的 80 端口上。需要注意的是,Service 能够将一个接收端口映射到任意的 targetPort,如果 t...

    2024-04-01 00:28:04
  • 深入理解Java内存模型

      深入理解Java内存模型(一)——基础深入理解Java内存模型(二)——重排序深入理解Java内存模型(三)——顺序一致性深入理解Java内存模型(四)——volatile深入理解Java内存模型(五)——锁深入理解Java内存模型(六)——final深入理解Java内存模型(七)——总结...

    2024-04-01 00:27:57