redis缓存穿透的解决办法

本文探讨了缓存穿透现象,其如何增加数据库压力并可能导致服务中断。介绍了两种常见的解决方法:一是简单但可能占用空间的赋null法,二是利用布隆过滤器的低空间占用但存在误判风险的解决方案。参考了B站黑马程序员的Redis视频教程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是缓存穿透

缓存穿透就是请求穿过redis查询不到数据,接着继续进入数据库查询,数据库中也不存在. 如此循环往复, 每次都透到底.

缓存穿透的危害

  1. 增大数据库的负担. 短时间请求过大,可能会导致数据库宕机 进而导致服务瘫痪.

缓存穿透的常见解决方式

1. 赋null法

在这里插入图片描述

	数据库查询不到就赋值为null,存入redis中, 下次再请求可以直接用redis返回了. 
	优点: 使用简单.
	缺点: 占用空间大  如果大批量随机id过来, 大量保存空数据仍然会占用redis空间, 到时候redis先死了.... 
1. 布隆过滤器法

在这里插入图片描述

	redis提供布隆过滤器, 在访问redis前,会判断id是否存在, 如果不存在, 直接返回, 不用进入redis和mysql.
	优点: 采用bit算法, 占用内存极小, 
	缺点: 算法正确率不是100%的, 属于是用正确率换空间.   
	特点: 简单几句总结:  如果布隆说没有, 那肯定没有, 如果他说有,不一定有.   

参考资料

bilibili黑马程序员: redis视频
https://www.bilibili.com/video/BV1cr4y1671t?p=40&spm_id_from=pageDriver&vd_source=8415cd4b0851afe9502f71a4f2d186ca

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值