Redis缓存雪崩,穿透
1.Redis缓存穿透
(1)现象
在用户请求过程中,假设被请求的数据不在Redis缓存中,此时请求会直接落到数据库,当当大量这种请求发生时,就会导致数据库崩溃。这种现象被称为Redis缓存穿透
(2)解决
a.如果被请求的数据不在Redis缓存中,但在数据库中能查询到相应的数据,那么在请求数据库后,将被请求的数据放入到Redis缓存。
b.如果被请求的数据不在Redis缓存中,并且在数据库中也不能查询到数据,那么在请求数据库后,需要设置一个空值到Redis缓存,这时也需要对这个key设置过期时间,避免过多的空值一直存在于缓存中。
(3)布隆过滤器
a.图解
b.说明
key被hash后, 会映射到这个二进制数组中,并且对应的数组位会变为1,查询时,就会迅速判断到该key是否存在。
c.优劣势
优点:采用二进制数组,内存占用小;检测速度快,返回结果及时。
缺点:存在误判;不能删除;
2.Redis缓存雪崩
(1)现象
大量的key在同一时间失效,并且此时有大量的请求到达服务器,此时这些请求就会直接访问到数据库,导致数据库宕机。
(2)预防
a.永不过期
b.过期时间错开
c.多缓存结合
d.使用第三方redis,第三方redis也是可以从源头上预防雪崩的。