Redis缓存雪崩、穿透、击穿
Redis缓存雪崩、穿透、击穿
- 解决方案
- 正常的缓存流程
- Redis缓存雪崩
- Redis缓存雪崩解决方案
- Redis缓存穿透
- Redis缓存穿透解决方案
- Redis缓存击穿
- Redis缓存击穿解决方案
解决方案
布隆过滤器,分布式锁
正常的缓存流程

Redis缓存雪崩

Redis中的key大面积失效,导致软件直接和数据库进行沟通,把请求都打到了数据库上。
这就是缓存雪崩,大量的redis在同一时间失效。
Redis缓存雪崩解决方案
- 设置缓存的失效时间,让它不要在同一时间失效。
- 在我们设置这个缓存的时候,随机初始化它的失效时间,这样的话就不会让所有缓存在同一时间失效,把所有请求都打到数据库上。
- redis一般都是集群部署,我们将热点的key放到不同的节点上去。让热点的缓存平均分布在不同的redis节点上。
- 不设置缓存失效的时间。
- 跑定时任务,定时刷缓存,例如缓存设置了三小时时效,在时效之前,把redis缓存给他重新跑进去,然后再设置三小时,不断地用这个定时任务去刷新这个缓存,这个缓存就不会失效。
Redis缓存穿透
数据库的主键就是从0开始递增的,没有负数。黑客不断利用id小于零的这个参数发请求。redis中查不到便会不断地将这个请求打到数据库上。
redis直接被这种数据穿透了,恶意用户去请求软件,然后用这个id等于负一的数据去请求。redis和数据库都没有这样的数据,一般出现这种情况都不是正常的用户,而是一些恶意的用户。
Redis缓存穿透解决方案
- 这个请求穿透redis到这个数据库,数据库无论查出什么请求,空或者有值都会缓存到redis中去。这样下次用同一个参数来发请求的时候,就不会穿透这个redis。但是他可能会换不同的参数。
- 拉黑IP,但是对方也可能更换不同的IP。
- 对参数的合法性检验,再判断这个参数不合法的时候,直接return掉。
- 使用布隆过滤器。
Redis缓存击穿
大量的用户请求去不断地访问这个热点的key,当这个热点的key突然失效,把请求打到数据库上,这个过程就叫做击穿。他是击穿一个非常热点的key。
Redis缓存击穿解决方案
- 让这个缓存永远不过期。
- 使用分布式锁。如果是单体应用的话,就可以使用互斥锁。
请求数据库这一步上锁,只有拿到锁的线程可以操作这个数据库。这个时候对数据库的压力就非常小。当他查询到这个数据之后再将缓存重新写到redis里面去。其他没有抢到锁的数据让他先睡几毫秒,然后再重新去redis里面去查询数据。
参考资料:什么是Redis缓存雪崩、穿透、击穿,十分钟给你讲的明明白白
相关文章:
Redis缓存雪崩、穿透、击穿
Redis缓存雪崩、穿透、击穿 解决方案正常的缓存流程Redis缓存雪崩Redis缓存雪崩解决方案 Redis缓存穿透Redis缓存穿透解决方案 Redis缓存击穿Redis缓存击穿解决方案 解决方案 布隆过滤器,分布式锁 正常的缓存流程 Redis缓存雪崩 Redis中的key大面积失效࿰…...
不要老盯着ChatGPT,这几家公司的产品同样不容小觑
Adept.ai 2022 年成立,致力于一款能够代替人类使用电脑、操控软件的AI助手,旗下模型 ACT-1 还处于雏形阶段,但根据官方示例,已经可以完成通过自然语言指令完成特定的任务。公司创始人曾任OpenAI的工程副总裁,后来进入谷…...
DataBinding 大坑总结(网上我暂时搜不到解决方法)
在使用多Module中使用DataBinding会引发一些奇怪的问题,最近好好的腾出时间来折腾这些奇怪的问题: 1:如果当Module启动DataBinding重启AS启动报错的话,就启用允许多行代码 android { defaultConfig {multiDexEnabled true} } de…...
Linux I/O复用函数的使用情况和select接口的介绍
I/O 复用使得程序能同时监听多个文件描述符,这对于提高程序的性能至关重要。通常, 网络程序在下列情况下需要使用 I/O 复用技术: 1.TCP服务器同时要处理监听套接字和连接套接字 2.服务器同时要处理TCP请求和UDP请求。 3.程序同时要处理多个套…...
leetcode:数字转换为十六进制数(详解)
前言:内容包括:题目,代码实现,大致思路,代码解读 题目: 给定一个整数,编写一个算法将这个数转换为十六进制数。对于负整数,我们通常使用 补码运算 方法。 注意: 十六进制中所有字…...
Android 10 设置人脸解锁时,锁屏显示人脸解锁图标
Android 10设置人脸解锁时,锁屏解锁图标不会显示人脸图标,若想显示人脸图标,可参考以下两点进行修改: 1.此处引用人脸图标资源,请参考如下修改: diff --git a/packages/SystemUI/src/com/android/systemui/…...
【嵌入式环境下linux内核及驱动学习笔记-(5-驱动的并发控制机制)】
目录 1、上下文和并发1.1 上下文1.2 共享与临界内核中并发控制机制分为以下几类:并发控制机制的使用场景: 2、 并发控制机制--中断屏蔽3、并发控制机制--原子变量3.1 相关函数原子量类型a.设置原子量的值b.获取原子量的值c.原子变量加减d.原子变量自增自…...
必学宝典 黑马《最新JavaWeb开发教程》上线
对于程序员,所在的行业更迭实属过快,如果是为了找一份好工作,学技术前一定要先了解技术在市场中的需求情况。不然等你学完之后,才发现自己学了已被淘汰、过时的技术,白白浪费了宝贵的学习时间,后悔都来不及…...
【社区图书馆】学习如何读书
人类社会只有发明了发明的方法之后才能发展。同样道理,你们只有学习了学习的方法之后才能进步。 ——查理芒格 进了开发的门,从一开始就在查文档、百度搜 bug 解决的文章、买书,读书。买了很多很厚的工具书,然后拿来垫桌子。再然后…...
CO02工单组件,新增/删除/修改
REPORT zpp153. 事务代码: ZPP153-整散车生产订单自动调整程序名称:ZPP153-整散车生产订单自动调整程序目的:ZPP153-整散车生产订单自动调整开发人员: *(修改日志)--------------------------------------------------------日志号…...
MIT6.824 lab3AB记录
实验目标:基于raft日志复制算法实现的线性一致性kv存储引擎。 线性一致性: 所有的读操作都能够读取到最近一次写操作的结果。所有节点(或者进程)在同一时刻,看到的数据都是相同的。 简而言之,线性一致性…...
一分钟了解美国棒球体系·棒球1号位
美国棒球体系是一个庞大且复杂的体系,涵盖了从青少年到职业的各个层次。下面是美国棒球体系的主要组成部分: 1. 青少年棒球(Youth Baseball) 美国的青少年棒球体系包括各种地区和全国性的联盟,如Little League、Pony…...
通过ObjectMapper和JsonNode 把JSON字符串转换成树结构数据和获取树节点数据
一.简介 今天同事有个需求,要把一个JSON字符串转换成一个树结构的数据并获取节点数据,鉴于自己不想写递归去转换,于是使用ObjectMapper和JsonNode类去实现。 二.依赖 pom文件引入依赖: <dependency><groupId>com.…...
鉴源论坛 · 观模丨面向界面的图形化测试技术
作者 | 熊一衡 华东师范大学软件工程学院博士 苏亭 华东师范大学软件工程学院教授 版块 | 鉴源论坛 观模 01 什么是面向界面的图形化测试(GUI Testing) 图形用户界面(GUI) 是一种通过图形化方式呈现信息、数据、功能和操作的用户界面,旨在…...
Midjourney以图生图的详细教程(含6种案例介绍)
🏆 文章目标:学习并介绍Midjourney以图生图的详细教程 🍀 Midjourney以图生图的详细教程 ✅ 创作者:熊猫Jay 🎉 个人主页:Jay的个人主页 🍁 展望:若本篇讲解内容帮助到您,…...
基于单片机的电路特性测试仪的设计
摘 要 当今社会科技的飞速发展,智能和便捷已经成为人们的日常诉求。现在放大电路在使用过程中经常出现故障,并且需要测试电路数据,但是大多数是手动进行测试,一定程度上影响了工作效率。 为了测量数据更安全更便捷,针…...
五一将迎2亿人次出行,君子签助力旅行社合规高效签旅游电子合同
近日,为规范旅游市场秩序,促进旅行社高质量发展,文旅部发布了《文化和旅游部办公厅关于进一步规范旅游市场秩序的通知》(下称《通知》),对旅游业提出了新的要求。 《通知》中规范了旅行社经营行为。旅行社要…...
IAP升级遇到的问题
文章目录 1. app程序在SystemClock_Config中跑飞2. 程序HAL_Delay中卡死3. 通过外部flash模拟的U盘没能被电脑识别4. 将bin文件拷贝到片内flash中失败5、APP程序跳转过后串口不能工作 这几天在STM32G473使用IAP升级的时候踩了不少坑 1. app程序在SystemClock_Config中跑飞 boo…...
简单聊聊k8s,和docker之间的关系
前言 随着云原生和微服务架构的快速发展,Kubernetes和Docker已经成为了两个重要的技术。但是有小伙伴通常对这两个技术的关系产生疑惑: 既然有了docker,为什么又出来一个k8s? 它俩之间是竞品的关系吗? 傻傻分不清。…...
半小时学会HTML5
一、了解几个概念 1、HTML定义 HTML是(Hyper Text Markup Language)超文本标记语言,超文本包含:文字、图片、音频、视频、动画等。 2、W3C 是什么? W3C 即(World Wide Web Consortium) 万维…...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能
下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用
1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...
Element Plus 表单(el-form)中关于正整数输入的校验规则
目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入(联动)2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...
中医有效性探讨
文章目录 西医是如何发展到以生物化学为药理基础的现代医学?传统医学奠基期(远古 - 17 世纪)近代医学转型期(17 世纪 - 19 世纪末)现代医学成熟期(20世纪至今) 中医的源远流长和一脉相承远古至…...
在 Spring Boot 项目里,MYSQL中json类型字段使用
前言: 因为程序特殊需求导致,需要mysql数据库存储json类型数据,因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...
Xela矩阵三轴触觉传感器的工作原理解析与应用场景
Xela矩阵三轴触觉传感器通过先进技术模拟人类触觉感知,帮助设备实现精确的力测量与位移监测。其核心功能基于磁性三维力测量与空间位移测量,能够捕捉多维触觉信息。该传感器的设计不仅提升了触觉感知的精度,还为机器人、医疗设备和制造业的智…...
[论文阅读]TrustRAG: Enhancing Robustness and Trustworthiness in RAG
TrustRAG: Enhancing Robustness and Trustworthiness in RAG [2501.00879] TrustRAG: Enhancing Robustness and Trustworthiness in Retrieval-Augmented Generation 代码:HuichiZhou/TrustRAG: Code for "TrustRAG: Enhancing Robustness and Trustworthin…...
