redis缓存穿透与缓存雪崩

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

图片说明

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

全部评论

相关推荐

07-24 19:01
门头沟学院 Java
后天笔试,又要开始做题了
Sairus:明天10:00笔试
投递京东等公司10个岗位
点赞 评论 收藏
分享
代码飞升:别用口语,后端就写后端,前端就写前端,最后别光后悔
点赞 评论 收藏
分享
评论
2
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务