Redis中的缓存雪崩、击穿、穿透的原因以及解决办法

redis的缓存 雪崩 击穿

在这里插入图片描述

1.缓存雪崩双11访问很大,比如说redis设置缓存时间为3小时,当购物超过3小时之后  首页redis 在一瞬间全部失效,导致所有请求都打在db上.造成db在响应不及时直接就挂掉了
这个时候首页就不能立马对外响应服务了redis的key大面积失效 导致前端直接请求db,吧请求都打在了数据库
这种现象就是缓存雪崩,大量的redis缓存在同一时间全部失效解决方案 设置缓存失效时间 不要让缓存在同一时刻失效在设计缓存的时候 随机初始化失效时间,这样的话就不会让所有的缓存在同一时间失效还有就是redis 一般都是集群部署
我们吧这些热点的key,放在不同的节点上,让热点的缓存都平均分配在不同的节点上
3.还有就是 让他永远不失效
4.还有就是跑定时任务,让他永远不失效,比如说我redis 缓存3小时失效,让他在失效之前跑一次定时任务.吧这个redis缓存重新跑进去.然后再设置3小时 不断的用这个定时任务去刷新这个缓存 这个缓存就不会失效
缓存穿透  数据库的主键是从0开始递增的redis 没有数据,查不到这个结果就回去数据库中查询,就会造成请求不断地 打到db中, 因为中间redis这层不能拦截这样的数据
Redis直接让这种数据给穿透了。直接压到db中

在这里插入图片描述

redis缓存和数据库都没有这样的数据,比如说恶意数据
缓存穿透的解决方案 请求穿透到redis到达这个db,我db无论查出来什么结果 空
还是非空都放到redis中,这样下次再用同一个参数发请求的时候就会从redis中获取了第二就是吧这个ip拉黑  但是他会换不同的ip
第三就是对这个参数的合法性进行校验  如果不合法直接就return
第四就是可以采取布隆过滤器
缓存击穿大量请求在redis中查询不到数据   这些请求就会全部打在这个db上造成这个db响应不及时 然后挂掉了,这个击穿是针对于某一个热点的key当某一热点key突然失效,吧请求打在这个db上  这个就叫做缓存击穿
缓存击穿的解决方案让缓存永远不过期2. 使用分布式锁 如果是单体项目的时候可以使用互斥锁大量用户访问redis 请求数据 ,如果有的话就返回给用户 如果redis中数据为空的话
他就会先请求数据库去请求数据
我们就在请求数据库这一步给他加上锁这个时候只有一个线程 能强到锁  所以有一个线程能操作db
这个时候对db的压力就很小
当他查询到这个数据之后在吧这个缓存重新写道redis中其他没有抢到锁子的线程让他先sleep几毫秒 然后再重新去redis中去拿数据
因为我们已经有一个线程抢到这个锁了,把这个数据库里面 的数据放到redis中了
呢么其他线程 再访问redis的时候就可以获取到锁了
这个是解决缓存击穿最好的实现

在这里插入图片描述

缓存雪崩是指 大量的缓存key 在同一时间大量的失效
缓存穿透 是指redis中没有你要的数据 他直接穿过你这个redis 到这个数据库了
缓存击穿 是指热点key 大量用户去请求这个热点key 当这个热点key突然失效的时候
我们一个项目可以分为3个阶段上线前准备  我们可以搭建集群来保证我们系统的健壮性 比如说mysql 集群 redis集群 还有我们项目本身的分布式集群  
项目运行中的一些准备  我们可以采用限流降级措施 防止大量请求打在数据库上	 造成数据不可用
项目宕机之后的一些 处理措施
1.我们可以采用普罗米修斯报警系统 第一时间发邮件告知开发人员
2.第一时间重启我们的项目
3.利用redisde rdb以及aof持久化机制  去快速回复redis的数据
最大限度的来减少我们的	系统不可用的时间

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一个完整的http请求响应过程

一、 HTTP请求和响应步骤 图片来自:理解Http请求与响应 以上完整表示了HTTP请求和响应的7个步骤,下面从TCP/IP协议模型的角度来理解HTTP请求和响应如何传递的。 二、TCP/IP协议 TCP/IP协议模型(Transmission Control Protocol/Internet Pr…

windows基础命令

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一.目录和文件的操作 1.cd 命令 切换到d盘 2.目录分为相对路径和绝对路径 3. dir命令 用于显示目录和文件列表 4. md 或 mkdir 创建目录 5. rd 用于删…

数据结构——AVL树

文章目录 一.AVL树的定义二.AVL树的插入三.插入后更新平衡因子四.AVL树的旋转1.左单旋2.右单旋3.先左单旋再右单旋4.先右单旋再左单旋 五.检查是否满足AVL树六.源码 一.AVL树的定义 二叉搜索树虽可以缩短查找的效率,但如果数据有序或接近有序二叉搜索树将退化为单支…

智慧水务和物联网智能水表在农村供水工程中的应用

摘 要:随着社会的进步和各项事业的飞速发展,人民生活水平的逐步提升,国家对农村饮水安全有了更高的要求,为了进一步提升农村供水服务的质量,利用现代化、信息化科学技术提升农村供水服务质量,提高用水管理效…

基于高通QCC5171的对讲机音频数据传输系统设计

一 研发资料准备 二 设计方法 蓝牙连接与配对:使用QCC5171的蓝牙功能,实现设备之间的蓝牙连接和配对。确保设备能够相互识别并建立起稳定的蓝牙连接。 音频采集与处理:将麦克风采集到的音频数据通过QCC5171的ADC(模数转换器&…

upload-labs详解------持续更新

目录 注: 搭建: pass-01(前端绕过) pass-02(后缀绕过) pass-03(黑名单绕过) pass-04(Apache解析漏洞\.htaccess文件绕过) 注: 本项目提供的…

如祺出行冲刺自动驾驶商业化,人少的地方机会多?

网约车,正在迎来让人“不明觉厉”的新一轮竞赛。 网约车监管信息交互系统的数据显示,截至今年6月30日,全国共有318家网约车平台公司取得网约车平台经营许可,环比增加5家;网约车监管信息交互系统6月份共收到订单信息7.…

爬虫原理详解及requests抓包工具用法介绍

文章目录 一、什么是爬虫?二、爬虫的分类三、网址的构成四、爬虫的基本步骤五、动态页面和静态页面六、伪装请求头七、requests库介绍1. 概念:2. 安装方式(使用镜像源):3. 基本使用:4. response对象对应的方…

使用Express部署Vue项目

使用Express部署Vue项目 目录 1. 背景 2. 配置Vue CLI 1.1 安装nodejs 1.2 创建vue-cli 1.3 创建vue项目 1.4 构建vue项目3. 配置Express 2.1 安装express 2.2 创建项目4. 使用express部署vue项目 1,背景 我们想要做一个前后端分离的课程项目,前端…

eclipse版本与jdk版本对应关系

官网:Eclipse/Installation - Eclipsepedia eclipse历史版本(2007-):Older Versions Of Eclipse - Eclipsepedia Eclipse Packaging Project (EPP) Releases | Eclipse Packages

记一次centos 磁盘挂载过程

前言 最近买了云服务器磁盘,需要挂载,一下就由大猿来记录这次过程。 挂载过程 查看磁盘挂载情况 查看物理硬盘 lsblkfdisk -l标记分区 fdisk /dev/vdb格式化分区 xfs mkfs.xfs /dev/vdb mkfs.xfs -f /dev/vdbext4 mkfs.ext4 /dev/vdbxfs 和 ex…

一起学算法(顺序表篇)

概念: 1.顺序表的定义 用一段地址连续的存储单元依次存储数据的线性表被称为数据表,在Java中顺序表一般是数组或者是ArrayList实现的 先把代码放这里,接下来一一给大家进行讲解: public class SeqList {private Object[] data;…

网络基础-认识每层的设备和每层的特点用途

目录 网络层次常见设备各层介绍数据链路层网络层传输层应用层 网络层次 常见设备 各层介绍 数据链路层 有了MAC地址。数据链路层工作在局域网中的,以帧为单位进行传输和处理数据。 网络层 网络层有了IP。不同的网络通过路由器连接成为互联网 路由器的功能:   …

如何用C#实现上位机与下位机之间的Wi-Fi通信?

有IP协议支持的话用UDP报文或者TCP直接发IP地址和端口不行么?你说的WiFi难道是2.4GHz频率模块那种东东? 你既然用了wifi,那么只要上位机和下位机的对应wifi网卡都具有ip地址以及其协议支持,那么和网络编程没啥子明显区别的吧………

pycharm制作柱状图

Bar - Bar_rotate_xaxis_label 解决标签名字过长的问题 from pyecharts import options as opts from pyecharts.charts import Barc (Bar().add_xaxis(["高等数学1,2","C语言程序设计","python程序设计","大数据导论",…

【13】STM32·HAL库-正点原子SYSTEM文件夹 | SysTick工作原理、寄存器介绍 | printf函数使用、重定向

目录 1.sys文件夹介绍(掌握)2.deley文件夹介绍(掌握)2.1deley文件夹函数简介2.2SysTick工作原理2.3SysTick寄存器介绍2.4delay_init()函数(F1)2.5delay_us()函数(F1)2.6delay_ms()函…

十大排序|十大排序

稳定排序&#xff1a;冒泡排序、插入排序、归并排序、基数排序、桶排序 不稳定排序&#xff1a;选择排序、快速排序、希尔排序、堆排序 二、插入排序&#xff1a; 代码&#xff1a; #include<iostream> #include<cstdio> #include<stdlib.h> #include<ve…

NLP实战9:Transformer实战-单词预测

目录 一、定义模型 二、加载数据集 三、初始化实例 四、训练模型 五、评估模型 &#x1f368; 本文为[&#x1f517;365天深度学习训练营]内部限免文章&#xff08;版权归 *K同学啊* 所有&#xff09; &#x1f356; 作者&#xff1a;[K同学啊] 模型结构图&#xff1a; &a…

Apikit 自学日记:API 异常监控-创建 API 监控

如何在apikit中&#xff0c;创建 API 监控呢&#xff1f; 创建并开启监控API 一、手动创建监控API Eolink API 网络监控平台支持从 Eolink API Management&#xff08;API管理产品&#xff09;中导入API信息&#xff0c;或者手动创建监控API。 进入API监控页面&#xff0c;点击…

个人中心 - 实现修改用户头像、用户名或密码

目录 1. 修改用户头像 1.1 获取原来的用户头像和用户名 1.2 实现保存头像 2. 修改用户名或密码 1. 修改用户头像 本文是针对之前的一篇项目博客 - 博客系统 做的一个扩展功能. 1.1 获取原来的用户头像和用户名 想要修改头像, 那么就得先获取数据库中原来的头像, 此处顺便…