JavaWeb开发思维导图之——Redis高级之缓存击穿(167)

一 概述

  • 缓存击穿
  • 数据库服务器崩溃
  • 问题排查
  • 问题分析
  • 解决方案(术)

二 缓存击穿

1
2
3
4
1-就是单个高热数据过期的瞬间,数据访问量较大
2-未命中redis后, 发起了大量对同一数据的数据库访问,导致对数据库服务器造成压力
3-应对策略应该在业务数据分析与预防方面进行,配合运行监控测试与即时调整策略
4-毕竟单个key的过期监控难度较高, 配合雪崩处理策略即可

三 数据库服务器崩溃

1
2
3
4
5
6
1-系统平稳运行过程中
2-数据库连接量瞬间激增
3-redis服务器无大量key过期
4-redis内存平稳,无波动
5-redis服务器cpu正常
6-数据库崩溃

四 问题排查

1
2
3
1-redis中某个key过期,该key访问量巨大
2-多个数据请求从服务器直接压到redis后, 均未命中
3-redis在短时间内发起了大量对数据库中同一数据的访问

五 问题分析

1
2
1-单个key高热数据
2-key过期

六 解决方案(术)

1
2
3
4
5
6
7
1-预先设定
1-以电商为例, 每个商家根据店铺等级, 指定若干款主打商品,在购物节期间, 加大此类信息key的过期时长
2-注意: 购物节不仅仅指当天, 以及后续若干天, 访问峰值逐渐降低的趋势
2-现场调整: 监控访问量, 对自然流量激增的数据延长过期时间或设置为永久性key
3-后台刷新数据: 启动定时任务, 高峰期来临之前, 刷新数据有效期, 确保不丢失
4-二级缓存: 设置不同的失效时间, 保障不会被同时淘汰就行
5-加锁: 分布式锁,防止被击穿, 但是要注意也是性能瓶颈,慎用

七 思维导图

javaweb-xmind-redis-hig-cache-out-17