缓存击穿、缓存穿透、缓存雪崩以及应对措施

1.缓存击穿

1.1概念

是指当某一key的缓存时间过期时大量并发量的请求同时访问此key,瞬间击穿服务器的直接访问数据库,让数据库处于负载的情况。

1.2解决措施

1.2.1异步定时更新

在缓存处理上,某一个热点数据的过期时间为一小时,那就每59分钟,通过定时任务去更新这个人点key,并重新设置其过期时间

1.2.2互斥锁

当redis中根据key获取value值为空时,先锁上,然后从数据库中加载完毕,释放锁。若其他线程也在请求key时,发现获取锁失败,先阻塞。

2.缓存雪崩

2.1概念

是指大量缓存同时过期或缓存服务器宕机,所有的请求的都直接访问数据库,造成数据库高负载,影响性能,甚至数据库宕机。

2.2解决措施

2.2.1 不同的过期时间

为了避免大量的同一时间过期,可以设置不同的过期使劲按,并且通过定期刷新的方式更新过期时间。

3.缓存穿透

3.1 概念

在缓存服务器上没有缓存数据,数据库上也没有符合条件的数据,当时业务系统每次都会绕过缓存服务器查询下游的数据库,缓存服务器完全失去了他的作用

3.2 解决方法

3.2.1设置空白值

可以对这些key对应的设为null,放入缓存,这样再出现这个key的请求的时候,直接返回null即可。

3.2.1 布隆过滤器

布隆过滤器是一个概率性的数据结构,它可以判断这个数据存不存在,一定不存在的直接返回,避免了数据库的压力。

相关推荐

  1. 缓存击穿缓存穿透缓存雪崩以及应对措施

    2024-07-10 21:12:04       16 阅读
  2. Redis缓存击穿缓存雪崩缓存穿透

    2024-07-10 21:12:04       51 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-10 21:12:04       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-10 21:12:04       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-10 21:12:04       45 阅读
  4. Python语言-面向对象

    2024-07-10 21:12:04       55 阅读

热门阅读

  1. Python基础学习笔记——异常

    2024-07-10 21:12:04       21 阅读
  2. C语言 printf函数缓冲机制

    2024-07-10 21:12:04       22 阅读
  3. DFS与BFS

    DFS与BFS

    2024-07-10 21:12:04      16 阅读
  4. 每日一题cf

    2024-07-10 21:12:04       19 阅读
  5. Vue3+Element-plus的表单重置

    2024-07-10 21:12:04       16 阅读
  6. #B. 等离子电视

    2024-07-10 21:12:04       22 阅读
  7. 纤程和协程理解

    2024-07-10 21:12:04       18 阅读
  8. 几款常见的数字孪生引擎

    2024-07-10 21:12:04       16 阅读