什么是redis缓存的雪崩、穿透以及击穿

缓存雪崩

举个例子,例如在双十一中,一点进去。访问量大,所以它很多数据是放在redis区缓存起来,对应redis的100个key。然后假设设置缓存失效时间是三小时。当双十一期间,购物超过这个三小时之后。这个首页的redis缓存会在一瞬间全部失效,导致所有的请求都会打到这个数据库上,造成这个数据库相应不及时而挂掉。这个时候呢,首页没办法再继续对外提供服务

那么缓存雪崩它解决方案有以下几种:

        1、第一个就是设置这个首页缓存的失效时间,让他不要在同一时间失效。在我们设置这个缓存的时候,随机初始化他这个失效时间。这样的话所有的缓存就不会在同一时间失效。

        2、还有redis一般都是集群部署的,我们把这些热点的key放到不同的节点上去,让这些热点的缓存平均的分布在这个不同的redis节点上。(简单就是多个redis多个请求)

        3、最暴力的方法,就是不设置缓存失效的时间,让他永远不失效。

        4、跑定时任务,让他定时的刷缓存。比如我这个缓存设置了三小时时效,那么我在失效之前,就把这个redis缓存给他重新跑进去。然后再设置三小时。不断地用定时任务去刷新,这个缓存就不会失效。

缓存穿透

        举个例子,比如说老哥自己开发了一个网站,然后这个网站非常地火爆,动了某些人的蛋糕,然后遭到疯狂的攻击就是采用缓存穿透。大家都知道数据库主键从0开始递增,没有负数。那么黑客就是利用这一点,他不断地利用这个id小于零地这个参数给它发请求。我把数据库里面,所有地数据都放到了redis,但是他用id小于零地数来请求,redis里面没有这个id,这样地话redis就查不到这个结果,一旦这个redis查不到这个结果,就会去数据库中查。那么就会造成请求不断地打到数据库上。因为中间redis这层是不能拦截这样的数据,这个redis直接被这种数据给穿透。

        就一直写这个id为-1的自动化脚本即可

解决办法

        1、这个请求如果穿透这个redis直接到这个数据库,我数据库无论查出什么结果,是空值还是有值,都会缓存到redis里去。这样他下次用同一个参数来发请求的时候就不会穿透这个redis。但是他可能会换不同的参数。

        2、把他这个ip拉黑,但是他也可能换不同的ip

        3、对参数的合法性检验,在判断这个参数不合法的时候,直接return掉

        4、布隆过滤器。布隆过滤器可以用于缓解缓存击穿问题。它被放置在缓存之前,作为一个快速的预过滤器。当一个请求到达时,首先经过布隆过滤器。如果布隆过滤器认为请求对应的数据肯定不在缓存中,就可以直接拒绝这个请求,而无需查询缓存或数据库。这样就可以避免大量请求落到数据库上,减轻了数据库的压力。

缓存击穿

        我们还拿双十一来举例     。比如很多人在九点的时候准时拍卖这个鞋。这个鞋的数据被放到了redis缓存里,对应这一个redis一个缓存的key。当这个鞋的缓存key超过缓存时间突然失效了,导致大量的请求查询不到这个数据

解决方案

        1、让缓存永远不过期肯定不好

        2、分布式锁。如果是当体应用的话就可以使用分布式锁。首先大量用户访问这个redis请求数据,如果有的话就会返回给用户。如果redis里面的数据为空的话,他就会请求这个数据库去请求数据。我们就在这个请求数据库这一步给他上锁。那么这个时候就只有一个线程,能抢到这个锁,那么对数据库的压力就非常小。当他查询到这个数据之后,会把缓存重新写道这个ride里面去。其他没有抢到锁的线程,先让他睡几毫秒,然后再重新去redis里面去查询这个数据。

分布式锁具体怎么实现?可以用zookeeper或者redis去实现这分布式锁

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/517239.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode十一题:容纳最多水的容器【11/1000 python】

👤作者介绍:10年大厂数据\经营分析经验,现任大厂数据部门负责人。 会一些的技术:数据分析、算法、SQL、大数据相关、python 作者专栏每日更新: LeetCode解锁1000题: 打怪升级之旅 LeetCode解锁1000题: 打怪升级之旅htt…

信息系统项目管理师——第18章项目绩效域管理(一)

本章节内容属于第四版新增知识,为PMBOK第七版专有,选择、案例、论文都会考,属于比较重要的章节。 选择题,稳定考3分左右,新教材基本考课本原话,需要多读课本,多刷题。 案例题,考的概…

SpringBoot快速入门笔记(3)

文章目录 一、MybatisPlus1、ORM2、添加依赖3、全局配置4、Navicat5、UserController6、CRUD操作7、BaseMapper8、两个注解 二、多表查询1、模拟用户订单2、通过用户查相关订单3、UserMapperNew4、查询订单和所属用户5、OrderMapper6、OrderController 三、条件查询四、分页查询…

C++之类

目录 一:面向过程和面向对象的初步认识 二:类的引入 三:类的定义 3.1类的两种定义方式: 3.2成员变量命名的建议 四:类的访问限定符及封装 4.1类的访问限定符 4.2封装 一:面向过程和面向对象的初步认…

【学习笔记】java项目—苍穹外卖day09

文章目录 用户端历史订单模块1. 查询历史订单1.1 需求分析和设计1.2 代码实现1.2.1 user/OrderController1.2.2 OrderService1.2.3 OrderServiceImpl1.2.4 OrderMapper1.2.5 OrderMapper.xml1.2.6 OrderDetailMapper 1.3 功能测试 2. 查询订单详情2.1 需求分析和设计2.2 代码实…

【计算机考研】408到底有多难?值得冲吗?

考408就必须要面对的现实!拒绝眼高手低!! 408其实想达到110并不难,但是想上130是比较困难的。 几个必须要面对的现实: 1.如果备考的是11408,除非基础特别好或者学习能力特别强,否则一定要尽早…

[Python] 如何导出PDF文件中的图片

文章目录 一、背景说明二、代码编写三、问题3.1、如何得到图片的xref?3.2、xref有什么用呢? 四、总结 一、背景说明 最近在看一份pdf的书籍,其中有一些图片绘制地比较出色,所以就打算将其复制出来,以便于在需要的时候…

TCP客户端及服务器端开发实践

一、TCP客户端及服务器端开发实践 1、TCP网络应用程序开发分类 ① TCP客户端应用程序开发 ② TCP服务器端应用程序开发 客户端程序是指运行在用户设备上的程序,服务端程序是指运行在服务器设备上的程序,专门为客户端提供数据服务。那如何记忆呢&…

深入浅出 -- 系统架构之单体架构

单体架构(Monolithic Architecture) 单体架构的定义 单体架构(Monolithic Architecture)是一种传统的软件架构模式,将整个应用程序作为一个单一的、统一的单元进行开发、部署和扩展。在单体架构中,所有的功…

【数字图像处理matlab系列】空间域处理之亮度变换(imadjust函数使用)

【数字图像处理matlab系列】空间域处理之亮度变换(imadjust函数使用) 在空间域中,图像处理就是直接对图像的像素进行操作 imadjust 是 MATLAB 中用于调整图像强度值或颜色图的函数。它可以改变图像的对比度,使得图像更清晰或更易于分析。以下是 imadju…

计算机网络针对交换机的配置

实验 目的 交换机的基本配置,交换机VLAN配置 实验条件 Windows,Cisco packet tracer 实验 内容 交换机的基本配置,交换机VLAN配置 实验 过程 一、交换机的基本配置 进入特权模式 Switch>enable 进入配置模式 Switch#configure ter…

第15届蓝桥杯省赛模拟第二期题解及代码实现

试题A:求余数 问题描述 求12345678901234567890123456789012345678901234567890除以2023的余数。 答案提交 这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余…

kubectl explain资源文档命令

学习并使用了一段时间的kubernetes,发现对k8s还是了解甚少,于是利用上下班通勤的时间又去B站看一些大佬的视频,又来重学巩固一遍知识,并做些记录。 之前在学习使用过程中未成了解过explain这个命令,因为自己部署的版本…

三、keepalived双机热备

一、双机热备概述 1、为什么需要双机热备: 双机热备主要为了解决服务器的单点故障问题。 在主机 MASTER 宕机之后可以马上切换到备选服务器 BACKUP。 服务器规划: 2、克隆产生web01服务器: (1) 基于LNMP克隆生成Web01服务器: (…

【TB作品】MSP430单片机读取大气压强传感器BMP180

文章目录 实物main所有代码 实物 main #include <msp430.h> #include "stdio.h" #include "OLED.h"#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h>// P2.2 oled scl // P2.3 oled sda// p…

第六期丨酷雷曼无人机技能培训

第6期无人机技能提升培训 盼望着盼望着&#xff0c;第六期无人机技能提升培训会终于如期和大家见面了。 2024年1月1日&#xff0c;国务院、中央军事委员会颁布《无人驾驶航空器飞行管理暂行条例》&#xff0c;对民用无人机飞行活动实施更为严格的规范约束&#xff0c;越来越多…

第十四篇:web后端开发-Springboot

文章目录 一、Web入门1. 什么是Spring2. SpringBootWeb入门3. HTTP 协议3.1 HTTP-概述3.2 HTTP-请求协议3.3 HTTP-响应协议 4. Web服务器4.1 Tomcat---简介4.2 基本使用 5. 请求/响应5.1 请求5.1.1 postman5.1.2 简单参数5.1.3 实体参数5.1.4 数组集合参数5.1.5 日期参数5.1.6 …

echart 仪表盘实现指针的渐变色及添加图片

需求&#xff1a; 在仪表盘中设置指针为渐变色&#xff0c;并在仪表盘中间添加图片。 实现重点&#xff1a; 1、仪表盘指针渐变色的实现 渐变色通过设置pointer的itemStyle属性内的color实现&#xff0c;重点是echart版本&#xff0c;这个原本使用4.8.0的版本不起作用&#xff…

33---PS2-键盘鼠标电路设计

视频链接 PS2-键盘鼠标电路设计01_哔哩哔哩_bilibili PS2-键盘鼠标电路设计 1、PS/2简介 PS/2原是“personal 2”的意思&#xff0c;即“个人系统2”&#xff0c;是IBM公司在上个世纪80年代推出的一种个人电脑。 PS/2协议和接口最初由IBM公司开发并广泛使用的应用于键盘/鼠…

速通数据结构与算法第四站 双链表

系列文章目录 速通数据结构与算法系列 1 速通数据结构与算法第一站 复杂度 http://t.csdnimg.cn/sxEGF 2 速通数据结构与算法第二站 顺序表 http://t.csdnimg.cn/WVyDb 3 速通数据结构与算法第三站 单链表 http://t.csdnimg.cn/cDpcC 感谢佬们…