[redis] -- 缓存雪崩和缓存穿透、缓存击穿问题解决方案篇

  • 缓存雪崩

    • 缓存同一时间大面积的失效,所以,后面的请求都会落到数据库上,造成数据库短时间内承受大量请求而崩掉
    • 解决方案
      • 事前:尽量保证整个redis集群的高可用性,发现机器宕机尽快补上。选择合适的内存淘汰策略。
      • 事中:本地ehcache缓存+hystrix限流&降级,避免MySQL崩掉
      • 事后:利用redis持久化机制保存的数据尽快恢复缓存
  • 缓存穿透

    • 缓存穿透说简单点就是大量请求的 key 根本不存在于缓存中,导致请求直接到了数据库上,根本没有经过缓存这一层
    • 解决方案
      • 参数校验
      • 缓存无效 key
      • 布隆过滤器
  • 缓存击穿

    • 热点缓存失效,导致后面的请求都落到数据库上,造成数据库短时间内承受大量请求,压力多大
    • 解决方案
      • 设置热点数据永远不过期
      • 互斥锁
  • 缓存雪崩与缓存击穿不同的是

    • 击穿针对同一条数据,而雪崩是大量的缓存
明明可以靠才华吃饭,非要靠脸~
原文地址:https://www.cnblogs.com/lycsmzl/p/13213766.html