缓存穿透、缓存击穿、缓存雪崩

2021-08-12  本文已影响0人  张某某xyz

20210813

概述

这3种情况的后果都是:缓存没起到缓存的作用,大量查询的请求还是到达了数据库

缓存穿透

查一个不存在的数据,比如id=-1的数据,并且发大量的请求查该数据,由于该数据缓存中没有,这些请求必然会到达数据库

解决:

  1. 从数据库中没查到的数据,缓存成key-null(最简单的办法)
  2. 采用布隆过滤器(上例中将所有id放入布隆过滤器,查数据库前先用布隆过滤器判断下该id是否存在)

缓存击穿

大量的请求查询id=1234的数据时,突然该数据的缓存过期,这些大量的请求也必然会到达数据库

解决:

  1. 热点缓存永不过期

缓存雪崩

突然90%的缓存同时过期,这些大量的请求也必然会到达数据库
一大片缓存同时过期,如同雪崩一样

解决:

  1. 缓存的过期时间设置成随机的

总结

缓存雪崩是针对大量key,缓存穿透和缓存击穿是针对个别key

上一篇 下一篇

猜你喜欢

热点阅读