热门标签 | 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数据库搞崩溃了。


推荐阅读
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 本文介绍了Redis中RDB文件和AOF文件的保存和还原机制。RDB文件用于保存和还原Redis服务器所有数据库中的键值对数据,SAVE命令和BGSAVE命令分别用于阻塞服务器和由子进程执行保存操作。同时执行SAVE命令和BGSAVE命令,以及同时执行两个BGSAVE命令都会产生竞争条件。服务器会保存所有用save选项设置的保存条件,当满足任意一个保存条件时,服务器会自动执行BGSAVE命令。此外,还介绍了RDB文件和AOF文件在操作方面的冲突以及同时执行大量磁盘写入操作的不良影响。 ... [详细]
  • 上图是InnoDB存储引擎的结构。1、缓冲池InnoDB存储引擎是基于磁盘存储的,并将其中的记录按照页的方式进行管理。因此可以看作是基于磁盘的数据库系统。在数据库系统中,由于CPU速度 ... [详细]
  • Centos下安装memcached+memcached教程
    本文介绍了在Centos下安装memcached和使用memcached的教程,详细解释了memcached的工作原理,包括缓存数据和对象、减少数据库读取次数、提高网站速度等。同时,还对memcached的快速和高效率进行了解释,与传统的文件型数据库相比,memcached作为一个内存型数据库,具有更高的读取速度。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 关于我们EMQ是一家全球领先的开源物联网基础设施软件供应商,服务新产业周期的IoT&5G、边缘计算与云计算市场,交付全球领先的开源物联网消息服务器和流处理数据 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 数字账号安全与数据资产问题的研究及解决方案
    本文研究了数字账号安全与数据资产问题,并提出了解决方案。近期,大量QQ账号被盗事件引起了广泛关注。欺诈者对数字账号的价值认识超过了账号主人,因此他们不断攻击和盗用账号。然而,平台和账号主人对账号安全问题的态度不正确,只有用户自身意识到问题的严重性并采取行动,才能推动平台优先解决这些问题。本文旨在提醒用户关注账号安全,并呼吁平台承担起更多的责任。令牌云团队对此进行了长期深入的研究,并提出了相应的解决方案。 ... [详细]
  • 解决Sharepoint 2013运行状况分析出现的“一个或多个服务器未响应”问题的方法
    本文介绍了解决Sharepoint 2013运行状况分析中出现的“一个或多个服务器未响应”问题的方法。对于有高要求的客户来说,系统检测问题的存在是不可接受的。文章详细描述了解决该问题的步骤,包括删除服务器、处理分布式缓存留下的记录以及使用代码等方法。同时还提供了相关关键词和错误提示信息,以帮助读者更好地理解和解决该问题。 ... [详细]
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社区 版权所有