Redis 缓存击穿

发布于 2024-04-23 08:45:22 字数 917 浏览 12 评论 0

问题

  • 系统平稳运行过程中
  • 数据库连接量瞬间激增
  • Redis 服务器无大量 key 过期
  • Redis 内存平稳,无波动
  • Redis 服务器 CPU 正常
  • 数据库崩溃

问题排查

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

问题分析

  • 单个 key 高热数据
  • key 过期

解决方案(术)

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

总结

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

忆梦

暂无简介

0 文章
0 评论
23 人气
更多

推荐作者

qq_E2Iff7

文章 0 评论 0

Archangel

文章 0 评论 0

freedog

文章 0 评论 0

Hunk

文章 0 评论 0

18819270189

文章 0 评论 0

wenkai

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文