二十三、Redis进阶-企业级解决方案-缓存雪崩
缓存雪崩指在某一个时间段内,缓存集中过期。从而导致所有请求都去查数据库,导致数据库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日
请登录后再评论