记录缓存穿透、缓存击穿、缓存雪崩原因以及解决方案

缓存穿透、缓存击穿、缓存雪崩原因以及解决方案

1.缓存穿透:请求大量不存在redis、数据库中的数据导致数据库宕机

redis缓存穿透问题解决方案:

1.把不存在的key存入redis中,值为null也存入(例如:id=-1,这种不存在的id,或者说是恶意伪造的id,查询数据库的结果存入redis中,此种方法不好)
2.使用布隆过滤器。

布隆过滤器:二进制的数组,里面存储的是(0/1)数据经过hash算法,在布隆过滤器中校验,如果查询的key经过各种hash算法都为1(只要有一个二进制不是1就不存在),则存在布隆过滤器中。说明数据存在不是恶意伪造数据,可以到redis,数据库中查询。

ps:不的key可能hash值相同,hash算法越多,误差率越低,性能越差

2.缓存击穿:redis中热点数据过期(双11x宝的门户首页数据),大量请求到数据库,导致数据库宕机

缓存击穿解决方案:

1.热点数据设置设置永不过期(不建议)
2.用分布式锁,待补充…

3.缓存雪崩:由于redis中存储的数据大面积同时到期,大量请求到数据库,导致数据库宕机

缓存雪崩解决方案:

1.存储在redis中的数据过期时间设置为2h+随机数分钟,让redis中的数据不会出现大面积同时过期的情况

おすすめ

転載: blog.csdn.net/weixin_45582733/article/details/113357085