<aside> 💡 真实项目中是如何解决缓存穿透的问题的?以 12306 的注册接口为例:‣

</aside>

查询一个不存在的数据,MySQL 查询不到的数据也不会直接写入缓存,就会导致每次请求都查询数据库

方案一:缓存空数据

查询返回的数据为空,仍把这个空结果进行缓存

方案二:布隆过滤器

布隆过滤器

布隆过滤器的特点:数据在布隆过滤器中存在,说明数据不一定真实存在;数据在布隆过滤器中不存在,说明数据一定不真实存在

布隆过滤器的特点:数据在布隆过滤器中存在,说明数据不一定真实存在;数据在布隆过滤器中不存在,说明数据一定不真实存在