Redis-- 缓存预热+缓存雪崩+缓存击穿+缓存穿透

news2025/1/31 11:30:13

Redis-- 缓存预热+缓存雪崩+缓存击穿+缓存穿透**加粗样式**

  • 一 面试题引入
  • 二 缓存预热
  • 三 缓存雪崩
    • 3.1 问题现象
    • 3.2 预防+解决
  • 四 缓存穿透
    • 4.1 定义
    • 4.2 解决方案
      • 4.2.1 空对象缓存或者缺省值
      • 4.2.2 Google布隆过滤器Guava解决缓存穿透
  • 五 缓存击穿
    • 5.1 定义
    • 5.2 危害
    • 5.3 解决
  • 六 总结

一 面试题引入

  • 缓存预热、雪崩、穿透、击穿分别是什么?你遇到过哪几种情况?
  • 缓存预热你是怎么做的?
  • 如何避免或者减少缓存雪崩?
  • 穿透和击穿有什么区别?他两是一个意思还是截然不同?
  • 穿透和击穿你有什么解决方案?如何避免?
  • 假如出现了缓存不一致,你有哪些修补方案?

二 缓存预热

@PostConstruct初始化白名单数据

三 缓存雪崩

3.1 问题现象

  • redis主机挂了,Redis全盘崩溃,偏硬件运维。
  • redis中有大量key同时过期大面积失效,偏软件开发

3.2 预防+解决

  • redis中key设置为永不过期or过期时间错开。
  • redis缓存集群实现高可用
    • 主从+哨兵。
    • Redis Cluster。
    • 开启redis持久化机制aof/rdb,尽快恢复缓存集群。
  • 多缓存结合预防雪崩:ehcache本地缓存+redis缓存
  • 服务降级:Hystrix或者阿里sentinel限流&降级

四 缓存穿透

4.1 定义

请求去查询一条记录,先查redis无,后查mysql无,都查询不到该条记录。但是请求每次都会达到数据库上面去。导致后台数据库压力暴增。这种现象我们称为缓存穿透,这个redis变成了一个摆设。

4.2 解决方案

在这里插入图片描述

4.2.1 空对象缓存或者缺省值

回写增强: 如果发生了缓存穿透,我们可以针对要查询的是,在Redis里存一个和业务部门商量后确定的缺省值(比如:零、负数、default、Null等。)比如,键uid:abcdXXX,值defaultNull作为案例的key和value。
先去redis查键uid:abcdxxx没有,再去mysql查没有获得,这就发生了一次穿透现象。
通过增强回写机制,mysql也查不到的话也让redis存入刚刚查不到的key并保护mysql。
但是此方法架不住黑客的恶意攻击,有缺陷...,只能解决key相同的情况。

黑客或者恶意攻击:
黑客会对你的系统进行攻击,拿一个不存在的id去查询数据,会产生大量的请求到数据库区查询,可能会导致你的数据库由于压力过大而宕机。

  • key相同:第一次达到mysql,空对象缓存后第二次就返回defaultNull缺省值,避免mysql被攻击,不用再导数据库中去走一圈了。
  • key不同:由于存在空对象缓存和缓存回写,redis中的无关紧要的key也会越写越多(记得设置redis过期时间)。

4.2.2 Google布隆过滤器Guava解决缓存穿透

  • 让布隆过滤器作为白名单使用:白名单里面有的才让通过,没有直接返回。但是存在误判,由于误判率很小,1%达到mysql,可以接受。注意:所有key都需要往redis和bloomfilter里面放入。
  • 误判问题,但是概率小可以接受,不能从布隆过滤器删除元素
  • 全部合法的key都需要放入Guava版布隆过滤器+redis里面,不然数据就是返回null。
    在这里插入图片描述

五 缓存击穿

5.1 定义

大量的请求同时查询一个key时,此时这个key正好失效了,就会导致大量的请求都达到数据库上面去。
简单说就是热点key突然失效了,暴打mysql。
穿透和击穿,截然不同。

5.2 危害

  • 会造成某一时刻数据库请求量过大,压力剧增。
  • 一般技术部门需要知道热点key是那些个? 做到心里有数防止击穿。
    热点key失效原因:
  • 时间到了自然清除但还被访问到。
  • delete掉的key,刚巧又被访问。

5.3 解决

  • 差异失效时间,对于访问频繁的热点key,干脆就不设置过期时间。

    在这里插入图片描述在这里插入图片描述

  • 互斥更新,采用双检加锁策略

六 总结

在这里插入图片描述

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

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

相关文章

Excel·VBA统计多部门多商品销售量前10%的商品

如图:根据表中唯一的货品ID,有m个事业部中分别有n种货品,统计各事业部销量前10%的货品名称,生成统计表(以下为2种统计方式) 目录 仅统计货品ID方法1:字典嵌套字典结果 方法2:自定义函…

【LED子系统】十、详细实现流程(番外篇)

个人主页:董哥聊技术 我是董哥,高级嵌入式软件开发工程师,从事嵌入式Linux驱动开发和系统开发,曾就职于世界500强公司! 创作理念:专注分享高质量嵌入式文章,让大家读有所得! 文章目录…

Hive ---- 文件格式和压缩

Hive ---- 文件格式和压缩 1. Hadoop压缩概述2. Hive文件格式1. Text File2. ORC3. Parquet3. 压缩1. Hive表数据进行压缩2. 计算过程中使用压缩 1. Hadoop压缩概述 为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器,如下表所示: Hadoo…

CodeForces..李华和迷宫.[简单].[找规律]

题目描述: 题目解读: 存在矩阵迷宫nm,(r,c)表示从顶部开始的第r行和左起第c列。 如果两单元格共享一个边,则是相邻的。路径是相邻空单元格的序列。 每个单元格初始状态都为空。对于从&#x…

代码随想录额外题目——图论部分

记录一下代码随想录中额外题目的图论部分 841.钥匙和房间 有 n 个房间,房间按从 0 到 n - 1 编号。最初,除 0 号房间外的其余所有房间都被锁住。你的目标是进入所有的房间。然而,你不能在没有获得钥匙的时候进入锁住的房间。 当你进入一个…

山海大模型亮相,云知声交出AGI第一份答卷

有人说,AI大模型是少数巨头才能玩得转的游戏。 截至目前,认同此观点的人不在少数。自从ChatGPT去年迅速火遍全球之后,忽如一夜春风来,AI大模型遍地开。Google、Amazon、阿里、百度等巨头们纷纷加入AI大模型的“军备竞赛”&#x…

【数据分享】1929-2022年全球站点的逐日平均气温数据(Shp\Excel\无需转发)

气象数据是在各项研究中都经常使用的数据,气象指标包括气温、风速、降水、湿度等指标,其中又以气温指标最为常用!说到气温数据,最详细的气温数据是具体到气象监测站点的气温数据!本次我们为大家带来的就是具体到气象监…

大数据分析案例-基于决策树算法构建世界杯比赛预测模型

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

EMC VNX Unified Storage 关机顺序方法

EMC Unfied的VNX存储系统要比单纯的Block系统复杂很多,相当于是两套存储系统,不管在物理硬件上还是逻辑的软件OS上,都复杂很多很多。 客户经常遇到由于机房停电或者机房搬迁等情况,需要对存储系统做关机下电甚至物理搬迁的动作&a…

FPGA基于AXI 1G/2.5G Ethernet Subsystem实现UDP通信DMA传输 提供工程源码和技术支持

目录 1、前言2、我这里已有的UDP方案3、详细设计方案传统UDP网络通信方案本方案详细设计说明DMA和BRAMAXIS-FIFOUDP模块设计UDP模块FIFOAXI 1G/2.5G Ethernet Subsystem:输出 4、vivado工程详解5、上板调试验证并演示注意事项 6、福利:工程代码的获取 1、…

【simple-cache】一款只用一个注解就实现缓存的框架-我们终于迎来了SpringBoot版本

上次我们讲了【simple-cache】的使用: 【simple-cache】我开发了一款只要一个注解就可以轻松实现缓存的框架 这次主要更新的内容为: 添加springboot项目框架中去除了redisconfig类,避免了redis的单机和集群问题用户可以自定义使用自己项目中…

Python之字符串(str)基础知识点

strip() 删除指定字符 当token为空时,默认删除空白符(含’\n’,‘\r’,‘\t’,’ ),当非空时,根据指定的token进行删除。 字符的删除又可分为以下几种情况: string.strip(token):删除string字符串中开头(left)、结尾处(right)的…

【操作系统】02.进程管理

多道程序系统 多道就是将多个程序同时装入内存,使之并发运行。操作系统也是基于多道产生的,提高了资源利用率和系统吞吐量。 进程 定义 进程是程序的一次执行 进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位 在引入线…

会流程图却不会UML活动图?活动图深度剖析,就怕你学不会!

1. UML活动图是啥? 也许很多人都不怎么了解活动图,但是却对流程图很熟悉,你暂且可以简单的把活动图理解为UML里的流程图,用来描述系统的行为特征。不过UML活动图对比于流程图来说也存在不少差异,本文将在第三章节讲解活…

解决 MobaXterm X11 server 打开 wsl2 linux 子系统 rviz 可视化窗口卡顿问题

1、问题 环境: MobaXtermwsl2 Ubuntu-18.04ROS1Intel 核显 一直使用 MobaXterm 这个远程软件 ssh 链接 linux 服务器,因为它集成了 X11 server,即可以显示一些 linux 下有图形化界面的程序,如 ROS 的 rviz 等。 但是 MobaXterm…

宝塔面板一键部署Z-Blog博客 - 内网穿透实现公网访问

文章目录 1.前言2.网站搭建2.1. 网页下载和安装2.2.网页测试2.3.cpolar的安装和注册 3.本地网页发布3.1.Cpolar临时数据隧道3.2.Cpolar稳定隧道(云端设置)3.3.Cpolar稳定隧道(本地设置) 4.公网访问测试5.结语 转发自cpolar极点云的…

一步一步的实现使用 Tensorflow Hub 进行图像分割

在本文中,我们将学习如何使用 TensorFlow Hub中提供的预训练模型执行语义图像分割。TensorFlow Hub 是一个库和平台,旨在共享、发现和重用预训练的机器学习模型。TensorFlow Hub 的主要目标是简化重用现有模型的过程,从而促进协作、减少冗余工…

[比赛简介]ICR - Identifying Age-Related Conditions

比赛链接:https://www.kaggle.com/competitions/icr-identify-age-related-conditions 比赛简介 本次比赛的目标是预测一个人是否患有三种疾病中的任何一种。您被要求预测该人是否患有三种疾病中的任何一种或多种(1 类),或者三种…

第14届蓝桥杯Scratch选拔赛(STEMA) 真题集锦

一、选择题 第 1题单选题 运行以下程序 (小象仅有两个造型),小象的造型是哪个? () 答案 A 解析 本题正确答案是A,考察的知识点是角色造型,在Scratch中,切换造型有两个指令,分别是“换成xx造型“和“下一个造型”,其中前者将角色切换为指定造型,而后者则从当前造型切换…

面向小白的最全Python数据分析指南,超全的!

因工作需求经常会面试一些数据分析师,一些 coding 能力很强的小伙伴,当被问及数据分析方法论时一脸懵逼的,或者理所当然的认为就是写代码啊,在文章开头先来解释一下数据分析。 数据分析是通过明确分析目的,梳理并确定…