热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

redi缓存穿透、击穿、雪崩故障现象及解决方案

目录一、redis缓存二、redis缓存击穿1、故障现象2、处理方案三、缓存雪崩1、缓存雪崩现象2、处理方案四、redis缓存穿透1、缓存穿透现象2、处理方案一、

目录

一、redis缓存

二、redis缓存击穿

1、故障现象

2、处理方案 

三、缓存雪崩

1、缓存雪崩现象

2、处理方案

四、redis 缓存穿透

1、缓存穿透现象

2、处理方案




一、redis缓存

  正常流程:

1、redis缓存中存在客户查询内容:客户需求 ——>①——>②结束查询

2、redis缓存中无,但是数据库中存在: 客户需 ——>③——>④——>⑤——>②结束查询

3、redis缓存中无,数据库中也无:客户需 ——>③ ——>⑥ ——>⑦结束查询


二、redis缓存击穿


1、故障现象

当高并发时,当以一个KEY非常热点(类似爆款),在不停的扛着大并发,当这个KEY在失效的瞬间,持续的大并发就击穿缓存,直接请求数据并更新到缓存中,导致性能下降。

 

当用户访问数据A时,redis缓存中存在则直接访问redis,此时,数据A一直处于高并发状态,然而此时redis的key失效了,持续的高并发击穿redis缓存,直接进入MySQL进行访问,当第一个访问达到mysql访问之后,MySQL会更新到redis,处于高并发状态时,会有数条访问击穿访问mysql,同时并更新到数据库A,浪费资源。导致新能下降。


2、处理方案 

加锁进行排队:当高并发发生时,突然redis中的key过期了,在redis中没有查询到相关数据时,给他加一个同步锁(进程锁),一次只允许一个线程通过,其他的线程会阻塞在外面, 第一个线程访问MySQL访问之后,数据会更新到redis中,后面的进行访问时,就是直接访问redis,而不会同时击穿redis,访问MySQL。


三、缓存雪崩


1、缓存雪崩现象

缓存集中过期或者缓存服务器宕机了,导致大量数据访问数据库,造成数据库压力过大宕机


2、处理方案

事前:采用高可用缓存。防止出现整个缓存故障。即使个别节点,机器甚至机房都关闭,系统仍然可以提供服务,Redis 哨兵(Sentinel) 和 Redis 集群(Cluster) 都可以做到高可用。

事中:缓存降级。当访问次数急剧增加导致服务出现问题时,可以采用 Hystrix,它通过熔断、降级、限流三个手段来降低雪崩发生后的损失。

事后:Redis备份和快速预热:Redis数据备份和恢复、快速缓存预热。


四、redis 缓存穿透


1、缓存穿透现象

redis中不存在查询的数据,同时mysql中也不存在,正常情情况下,这种情况是属于正常的,但当有大量的不存在的数据请求时,就有可能是黑客攻击,不停的访问数据库。高并大,导致服务器宕机。


2、处理方案

缓存空数据:当来访的,在redis中没有查询后,在mysql也没查询到,此时,给他缓存一个空对象到redis中,并设置一个随机的过期时间。


推荐阅读
  • MySQL缓存机制深度解析
    本文详细探讨了MySQL的缓存机制,包括主从复制、读写分离以及缓存同步策略等内容。通过理解这些概念和技术,读者可以更好地优化数据库性能。 ... [详细]
  • 优化Flask应用的并发处理:解决Mysql连接过多问题
    本文探讨了在Flask应用中通过优化后端架构来应对高并发请求,特别是针对Mysql 'too many connections' 错误的解决方案。我们将介绍如何利用Redis缓存、Gunicorn多进程和Celery异步任务队列来提升系统的性能和稳定性。 ... [详细]
  • 本文详细介绍了 MySQL 的查询处理流程,包括从客户端连接到服务器、查询缓存检查、语句解析、查询优化及执行等步骤。同时,深入探讨了 MySQL 中的乐观锁机制及其在并发控制中的应用。 ... [详细]
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
  • 本文深入探讨了 Redis 的两种持久化方式——RDB 快照和 AOF 日志。详细介绍了它们的工作原理、配置方法以及各自的优缺点,帮助读者根据具体需求选择合适的持久化方案。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • MySQL索引详解与优化
    本文深入探讨了MySQL中的索引机制,包括索引的基本概念、优势与劣势、分类及其实现原理,并详细介绍了索引的使用场景和优化技巧。通过具体示例,帮助读者更好地理解和应用索引以提升数据库性能。 ... [详细]
  • 作者:守望者1028链接:https:www.nowcoder.comdiscuss55353来源:牛客网面试高频题:校招过程中参考过牛客诸位大佬的面经,但是具体哪一块是参考谁的我 ... [详细]
  • 本文探讨了如何在日常工作中通过优化效率和深入研究核心技术,将技术和知识转化为实际收益。文章结合个人经验,分享了提高工作效率、掌握高价值技能以及选择合适工作环境的方法,帮助读者更好地实现技术变现。 ... [详细]
  • FinOps 与 Serverless 的结合:破解云成本难题
    本文探讨了如何通过 FinOps 实践优化 Serverless 应用的成本管理,提出了首个 Serverless 函数总成本估计模型,并分享了多种有效的成本优化策略。 ... [详细]
  • MySQL 高性能实战教程
    本课程深入探讨 MySQL 的架构、性能调优、索引优化、查询优化及高可用性等关键领域。通过实际案例和详细讲解,帮助学员掌握提升 MySQL 数据库性能的方法与技巧。 ... [详细]
  • 深入解析Redis内存对象模型
    本文详细介绍了Redis内存对象模型的关键知识点,包括内存统计、内存分配、数据存储细节及优化策略。通过实际案例和专业分析,帮助读者全面理解Redis内存管理机制。 ... [详细]
  • 阿里云ecs怎么配置php环境,阿里云ecs配置选择 ... [详细]
  • 本文详细介绍了如何在 MySQL 中授予和撤销用户权限。包括创建用户、赋予不同级别的权限(如表级、数据库级、服务器级)、使权限生效、查看用户权限以及撤销权限的方法。此外,还提供了常见错误及其解决方法。 ... [详细]
  • 本文介绍了数据库体系的基础知识,涵盖关系型数据库(如MySQL)和非关系型数据库(如MongoDB)的基本操作及高级功能。通过三个阶段的学习路径——基础、优化和部署,帮助读者全面掌握数据库的使用和管理。 ... [详细]
author-avatar
Yafei2702933480
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有