redis 缓存雪崩、穿透、击穿

1. redis简介:

开源的、高性能的非关系型数据库。


2.缓存雪崩:

大量的redis缓存key同一时间失效,导致大量访问请求直接打到数据库,造成数据库挂掉。

redis 缓存雪崩、穿透、击穿

解决方案:

1.随机初始化缓存失效时间,不要让大量缓存在同一时间失效。

2.将热点key分配到不同的redis节点上。

3.设置定时任务,在缓存失效时将数据重新刷进去。


3.缓存穿透

一般是指redis和数据中都没有这样的数据,大量请求穿透redis直接怼到数据库,导致数据库挂掉。一般是黑客恶意攻击

redis 缓存雪崩、穿透、击穿

解决方案:

1、使用布隆过滤器,这个是比较好的方法。内部维护一系列合法有效的KEY,迅速判断请求的合法性,对于不合法的请求,直接返回。

2、将第一次请求数据库查询结果写入Redis,这样能避免同一个key反复调用,但不能避免不同的非法KEY调用。


4.缓存击穿

访问某个热点数据时,数据放进缓存,正常情况下,由redis返回结果。但当key突然失效时,大量的访问请求击穿Redis,直接怼到数据库。

redis 缓存雪崩、穿透、击穿

解决方案:使用分布式锁。 在请求数据库时上锁,只有一个线程能抢到这个锁,也就是说只有一个线程能访问数据库,其它没有抢到锁的线程先睡几秒。当那个抢到锁的线程拿到数据后,将数据写到redis里面。其余线程睡醒了,再去访问redis,里面就有数据了。