redis缓存穿透与缓存雪崩

1. 缓存穿透
原因:缓存穿透是客户端请求了缓存层不存在的key,那么请求就会穿过缓存层,打到持久层DB上。
造成的问题:大规模不存在的key请求全部打到底层数据库,造成数据库瘫痪。
解决:引入布隆过滤器,持久层数据库中数据映射到布隆过滤器中,未知key请求穿过redis,由布隆过滤器检查key有效性,由布隆过滤器判断key在底层db存不存在,从而保护数据库。也可以在缓存层添加未知key的数据,设置value为null,过期时间设置短一些。保证相同的未知key请求不会持续打在底层数据库上。

图片说明

2. 缓存雪崩
原因:缓存层挂了
造成的问题:持久层DB直接抗大并发
解决:redis高可用-集群方案,降低挂机风险。或者使用限流,缓存层挂掉之后,同一key数据,只允许一个线程请求。还可以在开机前进行数据预热,防止刚开机,缓存中未写数据。

全部评论

相关推荐

头像
05-16 11:16
已编辑
东华理工大学 Java
牛客737698141号:盲猜几十人小公司,庙小妖风大,咋不叫她去4️⃣呢😁
点赞 评论 收藏
分享
FieldMatching:看成了猪头顾问,不好意思
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
2
1
分享

创作者周榜

更多
牛客网
牛客企业服务