背景
我们在项目中大量使用Redis承接海量数据的冲击,但是使用过程中也会遇到一些特殊的情况,这个就是缓存击穿、缓存穿透、缓存雪崩。
缓存穿透问题
先来看一个常见的缓存使用方式:读请求来了,先查下缓存,缓存有值命中,就直接返回;缓存没命中,就去查数据库,然后把数据库的值更新到缓存,再返回。
缓存穿透(Cache penetration) :
指查询一个一定不存在的数据,由于缓存是不命中时需要从数据库查询,查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到数据库去查询,进而给数据库带来压力。
缓存穿透一般都是这几种情况产生的:
通俗点说,读请求访问时,缓存和数据库都没有某个值,这样就会导致每次对 这个值的查询请求都会穿透到数据库,这就是缓存穿透。
缓存击穿(Cache breakdown)
当缓存的数据过期,同时对过期的数据进行大量请求,这突然导致搜索直接命中数据库,并极大地增加了数据库层的负载。
标签:缓存,请求,Redis,数据库,击穿,穿透,雪崩 From: https://www.cnblogs.com/songgj/p/16994550.html