redis 缓存击穿

本文探讨了缓存击穿现象,即单个高热数据key过期导致数据库瞬间压力剧增的问题。分析了其发生的原因,如大流量请求在key过期时直接访问数据库。提出了多种解决方案,包括预设定过期时间、现场调整、后台刷新数据、使用二级缓存和分布式锁等,强调了业务分析和监控的重要性。
摘要由CSDN通过智能技术生成

数据库服务器奔溃

  • 缓存击穿的现象
  1. 系统平稳运行过程中,数据库连接量瞬间激增
  2. redis 服务器无大量key 过期,redis 内存平稳,无波动
  3. redis 服务器CPU 正常
  4. 数据库崩溃
  • 问题排查
  1. redis 中某个key过期该key访问量巨大
  2. 多个数据请求从服务器直接压到redis后,均为命中
  3. redis 在短时间内发起了大量对数据库中同一数据的访问
  • 问题分析
    • 单个key 高热数据
    • 但是该key 过期

解决方案(术)

  • 预先设定

        以电商为例,每个商家根据商铺等级,指定若干款主打商品,在购物节期间,加大此类信息

        key的过期时长

        注意:购物节不仅仅指当天,应该包括后续若干天,访问峰值呈现逐渐降低的趋势

  • 现场调整

        监控访问量,对自然流量激增的数据延长过期时间或设置为永久性key

  • 后台刷新数据

        启动定时任务,高峰期来临之前,刷新数据有效期,确保不丢失

  • 二级缓存

        设置不同的失效时间,保障不会被同时淘汰就行

  • 加锁

        分布式锁,防止被击穿,但是要注意也是性能瓶颈,慎用!

总结

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值