Redis缓存三剑客

36 阅读1分钟

Redis缓存三剑客

1. 缓存穿透

* 定义: 
  一个数据在 数据库和Redis 中都没有值, DB查询不到数据也不会写入数据库, 短时间内有大量对这个数据的请求就会同时访问数据库, 导致数据库奔溃
​
* 如何解决
  缓存空值: 在数据库查询不到的这个数据时, 给Redis写入一个有时间限制的空值, 这样就不会有大量攻击请求同时攻击数据库
  布隆过滤器:
  

2. 缓存击穿

* 定义:
  我们在给某个Key设置了一个过期时间, 当过期时间到的时候, 短时间有大量对这个Key的访问请求, 导致大量对对这个Key的请求同时访问数据库, 导致数据库奔溃
  
* 怎么解决
  给某些数据设置永不过期
  使用互斥锁
  设置一个逻辑过期的value
  

3. 缓存雪崩

* 定义
  大量 key 同时失效或缓存服务整体不可用
​
* 怎么解决
  设置随机的过期时间
  构建高可用缓存集群
  设置多级缓存
  通过服务降级与熔断