redis缓存击穿穿透雪崩概念及解决方案

先说一下缓存击穿穿透雪崩都是高并发场景下大量请求缓存没查到直接访问数据库可能导致数据库宕机引起的但是这三个有细微的区别

1.缓存击穿,缓存击穿是大量请求同时访问一个数据,在代码执行的时候大量请求同时查完缓存都没有查到然后都去查数据库导致的

2.缓存穿透,缓存穿透是一个大量请求同时查询一个key,缓存里面没有数据库里面也没有

3.缓存雪崩,缓存雪崩是大量的key同时过期当访问量特别大的时候会有很多请求查缓存没有查到对应的key然后去访问数据库

解决方案

1.缓存击穿,缓存击穿是有很多请求同时访问访问一个key这个key缓存里面没有然后都去访问数据库导致的那么我们解决的时候就不让那么多请求都去访问数据库不就好了查完缓存之后如果缓存里面没有那么我们就给他加一个锁只有拿到锁的请求才能去查询数据库查完数据库把这个缓存给他加上然后释放锁后面的请求拿到锁以后再去查缓存就可以查到了

2.缓存穿透,缓存穿透既然是数据库没有这个key导致缓存里面没有这个key那么我们查询完数据库没有查到这个数据给缓存里面设置一个空key不就好了吗

3.缓存雪崩,既然雪崩是大量key同时过期那么我们不让他同时过期是不是也解决了呢,那具体怎么实现呢在我们给一个key设置过期时间的时候给他设置一个随机值是不是也就解决了呢

 

 

你可能感兴趣的:(缓存,数据库,java)