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

一篇带你了解redis企业级解决方案雪崩、击穿、穿透

用于学习后的自己总结,如有错漏恳请指教缓存雪崩原因:由于在较短的时间内大量的缓存数据过期了,然后在这个时间点的时候服务器去查询该数据&

用于学习后的自己总结,如有错漏恳请指教


缓存雪崩

原因:由于在较短的时间内大量的缓存数据过期了,然后在这个时间点的时候服务器去查询该数据,导致redis没有命中直接连接到数据库获取数据,然后数据库无法及时响应大量的请求导致对外呈现超时现象

解决方案:
1、大多数要走缓存的数据能否走静态化处理
2、构建多级缓存:nginx+redis+ehcache,一层一层缓存下去,缓解直接到达数据库获取数据
3、检查mysql严重耗时的业务进行优化,对数据库排查例如耗时很长的查询语句事务等
4、灾难预警机制:监控redis服务器的性能指标(雪崩对外最明显的就是cpu占用高)–cpu占用–内存容量—查询平均时间–线程数等指标
5、限流、降级:短时间内限制一部分的请求访问,降低应用服务器压力


缓存击穿

原因:在较短的时间内,某个热点数据过期,并且这个时候大量的请问访问该数据,导致redis没有命中直接请求数据库获取数据,导致数据库无法及时响应对外呈现超时现象(是不是和雪崩很像,下面有个对比说明)。

解决方案:
1、预先设定,比如某个值预先知道会被多次访问,此类信息加大过期时长。例如电商时候某种特价商品
2、现场调整,对流量激增的数据延长过期时间或者设置为永久性
3、后台刷新数据,启用定时任务,高峰来临之前刷新数据有效性
4、二级缓存,设置不同失效时间,保证不会同时失效
5、加锁,分布式锁防止被击穿,每执行一个操作需要锁上其他人不能进行操作,但要注意瓶颈因为加锁意味着是单线程执行。


缓存穿透

原因:用户大量发起缓存与数据库中都不该存在的数据,然后进行大量的请求发送,导致数据库压力过大。例如用户id是从0自增上去的,但请求的却是-1这类负数。通常这种情况是黑客人员在攻击网站

解决方案:
1、提前校验某些变量的值是否符合系统数据要求,在接口层校验将不符合的直接返回不去访问缓存或者数据库。
2、白名单策略:布隆过滤器
3、实时监控:监控redis的命中率与null数据的占比,根据倍数不同启动不同的排查流程然后使用黑名单进行监控

缓存击穿和缓存雪崩比较
缓存击穿是对特定的一个key进行高频的访问但这个缓存已经失效例如突然某位流量明星结婚了就有大量的粉丝进行搜索,然后缓存雪崩是因为大面积的缓存失效将DB数据库搞崩溃了。


推荐阅读
  • 优化Flask应用的并发处理:解决Mysql连接过多问题
    本文探讨了在Flask应用中通过优化后端架构来应对高并发请求,特别是针对Mysql 'too many connections' 错误的解决方案。我们将介绍如何利用Redis缓存、Gunicorn多进程和Celery异步任务队列来提升系统的性能和稳定性。 ... [详细]
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
  • 本文深入探讨了MySQL中常见的面试问题,包括事务隔离级别、存储引擎选择、索引结构及优化等关键知识点。通过详细解析,帮助读者在面对BAT等大厂面试时更加从容。 ... [详细]
  • 深入解析Spring Cloud微服务架构与分布式系统实战
    本文详细介绍了Spring Cloud在微服务架构和分布式系统中的应用,结合实际案例和最新技术,帮助读者全面掌握微服务的实现与优化。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • MySQL缓存机制深度解析
    本文详细探讨了MySQL的缓存机制,包括主从复制、读写分离以及缓存同步策略等内容。通过理解这些概念和技术,读者可以更好地优化数据库性能。 ... [详细]
  • 本文探讨了如何在日常工作中通过优化效率和深入研究核心技术,将技术和知识转化为实际收益。文章结合个人经验,分享了提高工作效率、掌握高价值技能以及选择合适工作环境的方法,帮助读者更好地实现技术变现。 ... [详细]
  • 全面解析运维监控:白盒与黑盒监控及四大黄金指标
    本文深入探讨了白盒和黑盒监控的概念,以及它们在系统监控中的应用。通过详细分析基础监控和业务监控的不同采集方法,结合四个黄金指标的解读,帮助读者更好地理解和实施有效的监控策略。 ... [详细]
  • 本文探讨了如何通过一系列技术手段提升Spring Boot项目的并发处理能力,解决生产环境中因慢请求导致的系统性能下降问题。 ... [详细]
  • PHP 5.5.0rc1 发布:深入解析 Zend OPcache
    2013年5月9日,PHP官方发布了PHP 5.5.0rc1和PHP 5.4.15正式版,这两个版本均支持64位环境。本文将详细介绍Zend OPcache的功能及其在Windows环境下的配置与测试。 ... [详细]
  • 百度服务再次遭遇技术问题,疑似DNS解析故障
    近日晚间,百度多项在线服务出现加载异常,包括移动端搜索在内的多个功能受到影响。初步迹象表明,问题可能与DNS服务器解析有关。 ... [详细]
  • 本文深入探讨了 Redis 的两种持久化方式——RDB 快照和 AOF 日志。详细介绍了它们的工作原理、配置方法以及各自的优缺点,帮助读者根据具体需求选择合适的持久化方案。 ... [详细]
  • 深入解析Redis内存对象模型
    本文详细介绍了Redis内存对象模型的关键知识点,包括内存统计、内存分配、数据存储细节及优化策略。通过实际案例和专业分析,帮助读者全面理解Redis内存管理机制。 ... [详细]
  • Java项目分层架构设计与实践
    本文探讨了Java项目中应用分层的最佳实践,不仅介绍了常见的三层架构(Controller、Service、DAO),还深入分析了各层的职责划分及优化建议。通过合理的分层设计,可以提高代码的可维护性、扩展性和团队协作效率。 ... [详细]
author-avatar
LIN-少爷
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有