什么是缓存穿透
缓存穿透就是请求穿过redis查询不到数据,接着继续进入数据库查询,数据库中也不存在. 如此循环往复, 每次都透到底.
缓存穿透的危害
- 增大数据库的负担. 短时间请求过大,可能会导致数据库宕机 进而导致服务瘫痪.
缓存穿透的常见解决方式
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