美文网首页
缓存雪崩 缓存击穿 缓存穿透

缓存雪崩 缓存击穿 缓存穿透

作者: 不ji的石头 | 来源:发表于2021-11-09 13:22 被阅读0次

    缓存雪崩:

    缓存中同一时刻⼤批热点数据同时过期,那么就可能导致⼤量请求直接访问数据库,造成数据库压力瞬间增大,严重会让数据库崩了。

    解决办法

    1.在原有的失效时间上加上一个随机值,比如1-5分钟随机。这样就避免了因为采用相同的过期时间导致的缓存雪崩。

    2.提高数据库的容灾能力,可以使用分库分表,读写分离的策略。

    3.了防止Redis宕机导致缓存雪崩的问题,可以搭建Redis集群,提高Redis的容灾性

    4.使用熔断机制。当流量到达一定的阈值时,就直接返回提示,防止过多的请求打在数据库上。

    • 缓存击穿

    缓存击穿:缓存击穿是指某⼀个热点key失效,导致了本应该访问redis的⼤量请求直接访问数据库

    解决⽅案:

    1.把这个热点key 不设过期时间

    2.使用互斥锁。如果缓存失效的情况,只有拿到锁才可以查询数据库,但是这样降低了并发,导致系统的性能变差。

    • 缓存穿透

    缓存穿透:是指某时刻大量访问的数据在redis和数据库中都没有,但是也会访问到数据库上面,造成数据库压力(一般情况为攻击),这就是缓存穿透。

    解决⽅案:

    1.使⽤布隆过滤器,它的作⽤就是过滤掉那些不存在的数据访问。虽然布隆过滤器也有误差,但是它认为⼀个数据不存在,那么这个数据就肯定不存在。如果布隆过滤器认为应该数据存在,数据也可能不存在,但是误差很小。
    2.设置一个空数据。当在数据库中也查询不到数据时,直接在缓存中存入一个特定的数据,下次再查询这个数据时,就会直接在缓存中查询出一个特定的数据返回。

    相关文章

      网友评论

          本文标题:缓存雪崩 缓存击穿 缓存穿透

          本文链接:https://www.haomeiwen.com/subject/ofbmzltx.html