一. 什么是缓存穿透?(缓存穿透的原因是什么?)
用户查询的数据,在数据库和前端都不存在的情况下,不断发送请求,从而增加数据库的压力;
二. 缓存穿透的解决方案是什么,以及存在的优缺点
1.缓存null值:
1.1 实现思路:用户查询不存在的数据,缓存未命中,继续查询数据库,数据库中,未查询到;将查询结果返回到缓存中,缓存一个null值。
1.2 优缺点:优点:实现简单,维护方便;缺点:占用缓存空间,容易造成数据的短期不一致;
- 布隆过滤:
2.1 实现思路:基于哈希算法
2.2 优缺点:优点:占用内存较少,不存在多余的key;缺点:实现复杂,存在误判(布隆过滤中,没有的数据,数据库和缓存中一定没有,但布隆过滤中有的数据,数据库和缓存不一定有)
- 增加id的复杂度,例如使用雪花算法随机生成id
4.原理示意图
5.实现思路:
6 .代码实现
7.redis更新问题