1、缓存数据基本流程
通常来说,我们是从数据库将数据查询出来之后,如果数据不为空,则将数据存储在缓存中,下次查询时就直接从缓存查询了,只有查询不到才会从数据库查询。
2、缓存穿透
核心在穿透两个字,穿透了,就说明在查询数据时没有遇到阻碍,直接就查询到了数据库。
也就是说我们某个数据在数据库不存在,那么就不会存储到缓存,那么这个空数据如果被大量访问,那就会有大量的请求穿透了缓存,直接命中在数据库。
3、缓存穿透解决方案
- 1、既然数据库没有,但是这个key又可能被大量访问,那么就将空值存储在缓存,过期时间设置短一点。就可以解决瞬时高并发问题。
- 2、使用布隆过滤器,查询时先去布隆过滤器查询key是否存在,不存在就直接返回,存在再查询数据库和缓存。
布隆过滤器解决方案,您了解过吗?对于缓存穿透,您还有其他解决方案吗?欢迎提出讨论!
4、缓存击穿
核心在击穿这两个字,击穿就某个或某些key表示以前是存在缓存数据的,现在这一刻消失了,失效了也就是破开了防御了。
大批量的瞬时请求突然到达数据库,