二十三、Redis进阶-企业级解决方案-缓存雪崩

作者: 温新

分类: 【Redis】

阅读: 2281

时间: 2020-09-06 09:26:51

缓存雪崩指在某一个时间段内,缓存集中过期。从而导致所有请求都去查数据库,导致数据库CPU和内存负载过高,甚至宕机。

缓存雪崩的原因

  • 1)较短时间内,缓存中较多的key集中过期
  • 2)在此周期内,所有的请求都访问过期数据,redis未命中,直接向数据库获取数据
  • 3)数据库无法同时处理大量请求
  • 4)Redis大量请求被积压,开始出现超时现象
  • 5)数据流量激增,数据库崩溃
  • 6)重启后仍旧面对缓存中无数据可用
  • 7)Redis服务器资源被严重占用,Redis服务器崩溃
  • 8)Redis集群崩溃、瓦解
  • 9)应用服务器无法及时处理得到的数据请求,客户端请求越来越多,应用服务器崩溃
  • 10)应用服务器、Redis、数据库重启效果不明显

解决方案

  • 1)将更多的页面进行静态化处理

  • 2)构建多级缓存架构。如Nginx缓存+Redis缓存+echcache缓存

  • 3)对数据库查询进行优化,如超时查询、耗时高的事务等

  • 4)灾难预警机制

    • 监控Redis服务器性能指标
    • CPU占用、使用率
    • 内容容量
    • 查询平均响应时间
    • 线程数
  • 5)限流、降级

短时间范围内牺牲一些客户体验,限制一部分请求访问,降低应用服务器压力,待业务低速运转后再逐步开放

解决方案

  • 1)数据有效期策略调整

    • 1.1)根据业务数据有效期进行分类错峰,如A类90分钟,B类80分钟,C类70分钟
    • 1.2)过期时间使用固定时间+随机值形式,稀释集中到期key的数量
  • 2)超热数据使用永久key

  • 3)定期维护(自动+人工)

对即将过期的数据做访问量分析,确认是否延时,配置访问量统计,做热点数据延时

此内容来源于网络,没有实际测试。记录下来,需要时方便到自己的博客中查找。

我是小白,期待和优秀的你一起同行!

小白

2020年09月06日

请登录后再评论