🌩️【缓存】缓存雪崩及缓存穿透
2022-11-11
| 2023-10-29
0  |  0 分钟
type
status
date
slug
summary
tags
category
icon
password
Sub-item
Last edited time
Oct 29, 2023 07:18 AM
Parent item
领域

缓存雪崩

假设有如下一个系统,高峰期请求为5000次/秒,4000次走了缓存,只有1000次落到了数据库上,数据库每秒1000的并发是一个正常的指标,完全可以正常工作,但如果缓存宕机了,每秒5000次的请求会全部落到数据库上,数据库立马就死掉了,因为数据库一秒最多抗2000个请求,如果DBA重启数据库,立马又会被新的请求打死了,这就是缓存雪崩。
notion image

如何解决缓存雪崩

  • 事前:redis高可用,主从+哨兵,redis cluster,避免全盘崩溃
  • 事中:本地ehcache缓存 + hystrix限流&降级,避免MySQL被打死
  • 事后:redis持久化,快速恢复缓存数据

缓存穿透

假如客户端每秒发送5000个请求,其中4000个为黑客的恶意攻击,即在数据库中也查不到。举个例子,用户id为正数,黑客构造的用户id为负数,
如果黑客每秒一直发送这4000个请求,缓存不起作用,数据库也很快被打死。
notion image

如何解决缓存穿透

  1. 查询不到的数据也放到缓存,value为空,如set -999 “”,但是设置较短的过期时间。
  1. 使用bloom过滤器

总结

  • 缓存雪崩就是缓存失效,请求全部全部打到数据库,数据库瞬间被打死。
  • 缓存穿透就是查询了一个一定不存在的数据,并且从存储层查不到的数据没有写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义.
计算机基础
  • 高性能
  • Web服务
  • 缓存技术
  • 【Web框架】使用GoFrame从零搭建web框架【缓存】Redis应用场景
    目录