1、穿透: 两边都不存在(皇帝的新装) (黑名单) (布隆过滤器)
解释:请求的数据既不在Redis中也不在数据库中,这时我们创建一个黑名单(hash结构)来存储该数据,下次再有类似的请求进来时,先验证是否存在黑名单中,如果存在就不会请求数据库,就成功缓解了数据库的压力。
布隆过滤器:思想:不存在一定不存在,存在可能存在。
为什么我们不用:底层采用redis的bitMap进行存储,经过三次hash后将我们的数据进行存储。我们将数据一次存入到布隆过滤器中,但是我们的数据不是一直不变的,我们在删除的时候会出现误判率。底层时bitMap进行存储的,我们可能多个数据公用一个二进制位,我们删除的时候会造成误删。
2、击穿:一个热点的key失效了,这时大量的并发请求直接到达数据库. (提前预热)
解释:提前将需要访问的数据信息先存入Redis数据库中
我们主要有一个主题表和明细表,我们xxl-job每隔10分钟访问主题表,如果主题表中的预发布时间与当前时间之差小于10分钟我们就进行同步,如果不满足间隔10分钟再次扫描进行同步。
3、雪崩:大量key同时失效 (避免大量的key同一时间失效,错峰)
解释:设置不同的过期时间,比如23小时+random*3600 进行设置。