缓存预热/雪崩/穿透/击穿
1. 缓存预热
预先将MySQL中的数据同步至Redis的过程
2. 缓存雪崩
Redis主机出现故障,或有大量的key同时过期大面积失效导致Redis不可用
- Redis中key设置为永不过期,或者过期时间错开
- Redis缓存集群实现高可用
- 多缓存结合预防雪崩
- 服务降级
3. 缓存穿透
每次请求数据Redis上都没有,导致MySQL压力增大,此时Redis形同摆设
- 空对象缓存或者缺省值
回写增强
如果发生了缓存穿透,我们可以针对要查询的数据,在Redis里存一个和业务部门商量后确定的缺省值(比如,零、负数、defaultNull等)。
比如,键uid:abcdxxx,值defaultNull作为案例的key和value
先去redis查键uid:abcdxxx没有,再去mysql查没有获得 ,这就发生了一次穿透现象。
but,可以增强回写机制
mysql也查不到的话也让redis存入刚刚查不到的key并保护mysql。
第一次来查询uid:abcdxxx,redis和mysql都没有,返回null给调用者,但是增强回写后第二次来查uid:abcdxxx,此时redis就有值了。
可以直接从Redis中读取default缺省值返回给业务应用程序,避免了把大量请求发送给mysql处理,打爆mysql。
但是,此方法架不住黑客的恶意攻击,有缺陷......,只能解决key相同的情况
黑客会对你的系统进行攻击,拿一个不存在的id去查询数据,会产生大量的请求到数据库去查询。可能会导致你的数据库由于压力过大而宕掉。
key相同
第一次打到mysql,
空对象缓存后第二次就返回defaultNull缺省值,
遥免mysql被攻击,不用再到数据库中去走一圈了key不同
由于存在空对象缓存和缓存回写(看自己业务不限死),
redis中的无关紧要的key也会越写越多(记得设置redis过期时间)
- 布隆过滤器

Guava布隆过滤器
<!--guava Google 开源的 Guava 中自带的布隆过滤器--> <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>23.0</version> </dependency>package com.example.redis;import com.google.common.hash.BloomFilter; import com.google.common.hash.Funnels; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest;@SpringBootTest public class GuavaBloomFilterTest {@Testpublic void test() {// 创建一个布隆过滤器 过滤整数值,预计插入元素为100BloomFilter<Integer> bloomFilter = BloomFilter.create(Funnels.integerFunnel(), 100);// 判断指定元素是否存在boolean contain = bloomFilter.mightContain(1);System.out.println(contain);// 将元素新增入布隆过滤器bloomFilter.put(1);contain = bloomFilter.mightContain(1);System.out.println(contain);} }
4. 缓存击穿
大量请求同时查询一个key时,该key刚好失效,导致大量请求打到数据库上(热点key失效)
- 差异失效时间,或者不设置失效时间
- 互斥更新,采用双检加锁策略
相关文章:
缓存预热/雪崩/穿透/击穿
1. 缓存预热 预先将MySQL中的数据同步至Redis的过程 2. 缓存雪崩 Redis主机出现故障,或有大量的key同时过期大面积失效导致Redis不可用 Redis中key设置为永不过期,或者过期时间错开Redis缓存集群实现高可用多缓存结合预防雪崩服务降级 3. 缓存穿透 …...
C/C++:优选算法
一、双指针 1.1移动零 链接:283. 移动零 - 力扣(LeetCode) 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。请注意 ,必须在不复制数组的情况下原地对数组进行操…...
用于大数据分析的数据存储格式:Parquet、Avro 和 ORC 的性能和成本影响
高效的数据处理对于依赖大数据分析做出明智决策的企业和组织至关重要。显著影响数据处理性能的一个关键因素是数据的存储格式。本文探讨了不同存储格式(特别是 Parquet、Avro 和 ORC)对 Google Cloud Platform (GCP) 上大数据环境…...
【Jupyter Notebook】安装与使用
打开Anaconda Navigator点击"Install"(Launch安装前是Install)点击"Launch" 点击"File"-"New"-"Notebook" 5.点击"Select"选择Python版本 6.输入测试代码并按"EnterShift"运…...
默认端口被占用后,如何修改Apache2 端口
你可以通过以下步骤修改 Apache2 的默认端口(80 端口): 1. 修改 Apache2 配置文件 首先,你需要编辑 Apache2 的端口配置文件: sudo nano /etc/apache2/ports.conf在文件中,你会看到类似以下的内容&#…...
Unity数据持久化 之 一个通过2进制读取Excel并存储的轮子(2) (*****生成数据结构类的方式特别有趣****)
本文仅作笔记学习和分享,不用做任何商业用途 本文包括但不限于unity官方手册,unity唐老狮等教程知识,如有不足还请斧正 Unity数据持久化 之 一个通过2进制读取Excel并存储的轮子(1)-CSDN博客 本节内容 实现目标 通过已经得到的Excel表格…...
Idea 中的一些配置
配置 javap jdk 自带的 javap 可以用来查看字节码信息。 配置过程: 打开设置,定位到 Tools,External Tools新建项,Program 中填 javap 的路径Argument 中填 -c $FileClass$Working directory 中填 $OutputPath$ Argument 中也…...
VulnHub DC-1-DC-7靶机WP
VulnHub DC系列靶机:https://vulnhub.com/series/dc,199/ # VulnHub DC-1 nmap开路获取信息 Nmap scan report for 192.168.106.133 Host is up (0.00017s latency). Not shown: 997 closed ports PORT STATE SERVICE 22/tcp open ssh 80/tcp open http 1…...
基于DPU的容器冷启动加速解决方案
1. 方案背景 1.1. 业务背景 随着容器技术的迅猛发展与广泛应用,一种新的云计算服务模式应运而生-函数即服务(FaaS, Function as a Service)。FaaS作为一种无服务器(Serverless)计算方式,极大地简化了开发…...
SOME/IP 通信协议详细介绍
标签: SOME/IP 通信协议详细介绍; SOME/IP; SOME/IP 通信协议详细介绍 SOME/IP 通信协议详细介绍 官网: https://some-ip.com/ 1. 什么是SOME/IP? SOME/IP(Scalable service-Oriented MiddlewarE over IP…...
基于Boost库的搜索引擎开发实践
目录 1.项目相关背景2.宏观原理3.相关技术栈和环境4.正排、倒排索引原理5.去标签和数据清洗模块parser5.1.认识标签5.2.准备数据源5.3.编写数据清洗代码parser5.3.1.编写读取文件Readfile5.3.2.编写分析文件Anafile5.3.2.编写保存清洗后数据SaveHtml5.3.2.测试parser 6.编写索引…...
【2023年】云计算金砖牛刀小试3
A场次题目:OpenStack平台部署与运维 业务场景: 某企业拟使用OpenStack搭建一个企业云平台,用于部署各类企业应用对外对内服务。云平台可实现IT资源池化,弹性分配,集中管理,性能优化以及统一安全认证等。系统结构如下图: 企业云平台的搭建使用竞赛平台提供的两台云服务…...
在以太坊中不同合约之间相互调用的场景有哪些?
在以太坊中,合约调用合约的场景有很多,以下是一些常见的情况: 一、复杂业务逻辑的拆分 模块化设计: 当一个智能合约的业务逻辑变得复杂时,可以将其拆分为多个较小的合约,每个合约负责特定的功能。例如&…...
关于 PC打开“我的电脑”后有一些快捷如腾讯视频、百度网盘、夸克网盘、迅雷等各种捷方式在磁盘驱动器上面统一删除 的解决方法
若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/142029325 长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV…...
数据结构——初识数据结构
数据结构——初识数据结构 数据结构的概念数据的类型时间复杂度 数据结构的概念 相互之间存在一种或多种特定关系的数据元素的集合。数据结构是计算机科学中的一个基本概念,它是指数据元素之间的关系和组织方式。数据结构是计算机存储、组织数据的方式,…...
每日搜索论坛回顾:2024年9月13日
Google正在测试一个新的广告标签标题,使广告更加明显。Google搜索排名的波动仍然非常剧烈,即使在核心更新完成一周后仍然如此。Google正在向本地服务广告的广告主发送验证通知。Bing正在测试带有评论来源图标的本地包。Google AdSense正在将自动广告扩展…...
猎板PCB大讲堂:PCB设计铺铜技巧与策略全解析
在电子工程领域,PCB的设计不仅仅是连接电子元件的桥梁,更是确保设备性能和稳定性的关键。铺铜,作为PCB设计中的一个微妙而强大的环节,常常被低估。 猎板PCB带您深入了解铺铜的艺术,探讨其背后的科学原理,以…...
Matplotlib - Statistical Distribution作图
1. 前言 在数据分析和统计学中,绘制统计分布图是非常重要的,因为它帮助我们直观地理解数据的特性,并为进一步的分析提供基础。统计分布图能够揭示数据集的结构、趋势、集中趋势和离散程度等信息,从而使我们更容易做出合理的假设、…...
【机器学习】9 ——最大熵模型的直观理解
系列文章目录 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 系列文章目录前奏例子硬币垃圾邮件代码 前奏 【机器学习】6 ——最大熵模型 例子 硬币 假设我们有一枚硬币,可能是公平的,…...
1.单例模式
目录 简介 饿汉式 懒汉式 双重检测锁式 静态内部类式 枚举单例 测试 测试单例模式: 测试五种单例模式在多线程环境下的效率 问题(拓展) 例:反射破解单例模式 例:反序列化破解单例模式 总结:如何…...
基于服务器使用 apt 安装、配置 Nginx
🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...
python爬虫——气象数据爬取
一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用: 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests:发送 …...
41道Django高频题整理(附答案背诵版)
解释一下 Django 和 Tornado 的关系? Django和Tornado都是Python的web框架,但它们的设计哲学和应用场景有所不同。 Django是一个高级的Python Web框架,鼓励快速开发和干净、实用的设计。它遵循MVC设计,并强调代码复用。Django有…...
Springboot 高校报修与互助平台小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,高校报修与互助平台小程序被用户普遍使用,为…...
react-pdf(pdfjs-dist)如何兼容老浏览器(chrome 49)
之前都是使用react-pdf来渲染pdf文件,这次有个需求是要兼容xp环境,xp上chrome最高支持到49,虽然说iframe或者embed都可以实现预览pdf,但为了后续的定制化需求,还是需要使用js库来渲染。 chrome 49测试环境 能用的测试…...
WinUI3开发_使用mica效果
简介 Mica(云母)是Windows10/11上的一种现代化效果,是Windows10/11上所使用的Fluent Design(设计语言)里的一个效果,Windows10/11上所使用的Fluent Design皆旨在于打造一个人类、通用和真正感觉与 Windows 一样的设计。 WinUI3就是Windows10/11上的一个…...
uni-app学习笔记二十七--设置底部菜单TabBar的样式
官方文档地址:uni.setTabBarItem(OBJECT) | uni-app官网 uni.setTabBarItem(OBJECT) 动态设置 tabBar 某一项的内容,通常写在项目的App.vue的onLaunch方法中,用于项目启动时立即执行 重要参数: indexnumber是tabBar 的哪一项&…...
SE(Secure Element)加密芯片与MCU协同工作的典型流程
以下是SE(Secure Element)加密芯片与MCU协同工作的典型流程,综合安全认证、数据保护及防篡改机制: 一、基础认证流程(参数保护方案) 密钥预置 SE芯片与MCU分别预置相同的3DES密钥(Key1、Key2…...
电脑定时关机工具推荐
软件介绍 本文介绍一款轻量级的电脑自动关机工具,无需安装,使用简单,可满足定时关机需求。 工具简介 这款关机助手是一款无需安装的小型软件,文件体积仅60KB,下载后可直接运行,无需复杂配置。 使用…...
第6章:Neo4j数据导入与导出
在实际应用中,数据的导入与导出是使用Neo4j的重要环节。无论是初始数据加载、系统迁移还是数据备份,都需要高效可靠的数据传输机制。本章将详细介绍Neo4j中的各种数据导入与导出方法,帮助读者掌握不同场景下的最佳实践。 6.1 数据导入策略 …...
