缓存的击穿,穿透,雪崩

101 阅读1分钟

缓存击穿

缓存击穿是指在高并发的情况查询一个数据库里面存在的数据,但是由于缓存里面没有,导致了同一时刻大量查询数据库,造成数据库压力过大。(一般是由于缓存到了过期时间导致的)
解决方案:
1) 可以加分布式锁机制来解决。
2) 热点数据永不过期。

缓存穿透

缓存穿透是指访问一个数据库里不存在的数据,由于数据库不存在,而数据库查询的结果为null又没有缓存,所以每次都去查询数据库造成数据库压力过大。
解决方案:    
 1)可以在接口层做校验,比如id<0则不去查询。
 2)对null结果值也做缓存。缓存一段时间。

缓存雪崩

缓存雪崩指的在一个时刻大量的缓存都过期了,导致了大量请求访问数据库
解决方案:
1) 对缓存的数值在缓存的时候加一个随机数。
2) 设置热点数据不过期
3) 可以设置缓存的时候redis的这种集群模式,这样缓存是分布式在不同的机器上,减少了压力。