1、缓存穿透
我们知道,前端向后台发起请求的时候,可以先从缓存中返回数据,缓存中有数据就返回,没有再到数据库中去查;在数据库中查到了就将查到的结果更新到缓存里面去,再向前端返回查到的结果,如果在数据库中没有查到,就返回空值。在这个过程中,如果要查的数据既不在缓存里,又不在数据库里,这种情况就叫做“缓存穿透”。“缓存穿透”是一种攻击数据库的手段,一直查找根本就不存在的数据会使数据库性能急剧上升。
2、缓存击穿
要查的某一条数据不在缓存里(这条数据过期时间到了),但在数据库中,所以情况就是先到缓存里是查不到的,只好到数据库中去查,但如果要同时到数据库去查的并发量太大的话,会使数据库性能急剧上升。
3、缓存雪崩
要查的很多条(不止一条)数据都不在缓存里,全部都需要到数据库中去查,从而使数据库的性能急剧上升。“缓存雪崩”是由于大量的不同数据都不在缓存里而导致的,但是“缓存击穿”只是由于其中一条数据不在缓存里导致的。