Java-Redis缓存穿透,击穿,雪崩和布隆算法

news2024/12/24 7:33:55

Java-Redis缓存穿透,击穿,雪崩和布隆算法

  • 1.缓存穿透概念:
  • 2.如何解决缓存穿透:
  • 3.什么是缓存击穿?
  • 4.什么是缓存雪崩?
  • 5.导致缓存雪崩的原因:
  • 6.缓存穿透,缓存击穿,缓存雪崩的区别:

1.缓存穿透概念:

当一个用户想要查询数据时,发现redis缓存里面没有,就会向mysql中发送请求查询,发现数据库也没有数据时,于是就查询失败。当秒杀场景时,用户访问量很大,就会给服务器很大压力,相当于出现缓存穿透。

2.如何解决缓存穿透:

1)将mysql中查询到数据,存到redis中。 比如从数据库中查询-1,返回一个null值,把这个kv键值对存储到redis中。但是如果id是一个UUID的话(动态的),会取得适得其反的

2)使用布隆过滤器存储未来可能查询的字段,但是因为不影响整体链路的性能,需要把布隆过滤器放到内存中,所以如果数据过大,会导致内存紧张。如何把重量级过滤器转变为轻量级的?

布隆算法!! : 通过错误率来换取空间的一个算法
在这里插入图片描述
注解: 假设在布隆过滤器创建一个数组,长度是10,并且是二进制的。我们先把数据库中id=10通过hash函数(1.hash值进可能是散列表 2.hash值要在[0,数组容量-1]),得到一个value值,标识在过滤器里。

但是布隆算法会有错误率,导致原因 hash碰撞导致。但是 你如果还有一个客户端(id=983)去访问布隆过滤器,由于未被标识过,返回的是未被标识 ,那这个是肯定在数据库中没有的,用类似反证的手法。

布隆过滤器总结:
1)布隆过滤器告诉你数据存在,但是它不一定存在(由于hash碰撞导致的)
2)布隆过滤器告诉你数据不存,那么它肯定不存在
3)布隆算法的错误率受数据长度的影响 和 hash函数的个数影响

为什么 hash函数的个数会影响错误率?
假设id=10,通过布隆过滤器 三个hash算法 那么假设最后的hash值为 1,5,10 。之后我们客户端需要查询id=100是否存在,那么id=100经过布隆过滤器是三个hash算法,它可能为1的错误率为1/10,5的错误率为1/10,10的错误率为1/10,它总错误率为(1/10)的三次方,错误率降低。注意: hash函数的个数不是越多越好,3-5个差不多

3.什么是缓存击穿?

假设一个客户端 一个tomcat 一个redis(里面有一条热门数据 时间期限为1天) mysql
1天之内 是客户端---- tomcat ----redis
1天之后 客户端----tomcat----mysql 这种情况就叫缓存击穿

总结: redis中只有一条有效数据,当过了这个时间,tomcat就穿过redis,直接访问数据库,这个就叫缓存击穿

缓存击穿和缓存穿透的区别:
缓存击穿是缓存穿透的一种特殊表现形式

解决方案:
1)一般中小型公司不需要解决,因为很少有业务场景会有热门数据一直存在
2)分布式锁 可以解决多个节点上多个进行的排队问题

需要加锁的条件:
1)有共享资源
2)共享资源互斥
3)多任务的情况下

分布式锁如何解决缓存击穿:
在这里插入图片描述
注释: 假设我有三台服务器,通过nginx代理了三台tomcat,假设客户端需要查询id=10的值,那么三台tomcat都先向redis缓存里面去找,发现缓存没有,那么会直接去找mysql数据。而当我加了一个分布式锁之后,那三台tomcat的请求先被我锁拦截,只有一台tomcat可以拿到这个锁,查找数据库id=10的值,等查询完成后,缓存到redis中,而这时候其他俩个tomcat就不用等着再去拿锁,直接去redis缓存中拿值,但是会存在效率问题。

4.什么是缓存雪崩?

在这里插入图片描述
一台client 一台tomcat 一个redis(redis里面存有很多热点数据 时效1天) 一个mysql

当一天后,redis里面的很多热点数据时效,然而客户端还是发起了这些热点数据的请求,此时tomcat在redis里面查询不到数据,找到了mysql,这一次mysql数据库承受了巨大的压力,这个就叫缓存雪崩。

5.导致缓存雪崩的原因:

1)数据有效期都一致 ====>解决方法: 给数据设置不同的有效期
2)redis挂机 ===>设置redis集群

6.缓存穿透,缓存击穿,缓存雪崩的区别:

缓存击穿(1条数据失效导致的问题)和缓存雪崩(多条数据时效导致的问题) 都是缓存穿透的一种特殊表现形式

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

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

相关文章

一文解析Menu Governor

在现代操作系统中,往往很多时候并不需要去执行cpu密集型的任务,而每当这个时候,如果去持续的执行循环去等待新的任务发过来,那需要消耗巨大的能量。所以设计人员设计出一种空闲状态以此CPU进入低功耗模式。在Linux系统中&#xff…

智能运维的集中告警平台实战思路 —— 紧耦合还是宽融合?

作者:擎创科技产品总监 Daniel 本文是节选,如感兴趣可留言一起探讨。 ( 我们在确定一个产品的思路和方向时,经常面临截然不同的选择。如同此文探讨的集中告警平台是否应跟集中监控平台紧绑定或松融合,具体的实战案例…

[译] Dart 3 发布了

[译] Dart 3 发布了 原文 https://medium.com/dartlang/announcing-dart-3-53f065a10635 https://ducafecat.com/blog/dart-3 来自 Google I/O 2023 的问候。今天,我们在 Mountain View 现场宣布 Dart 3——迄今为止最大的 Dart 发布!Dart 3 包含三个主要…

Springboot +Flowable,各种历史信息如何查询(一)

一.简介 正在执行的流程信息是保存在以 ACT_RU_ 为前缀的表中,执行完毕的流程信息则保存在以 ACT_HI_ 为前缀的表中,也就是流程历史信息表。 假设有一个流程,流程图如下: 当这个流程执行完毕后,以 ACT_RU_ 为前缀的…

小黑子—多媒体技术与运用基础知识三:数字图形图像处理技术

多媒体技术与运用3.0 多媒体系列第三章1. 颜色科学1.1 颜色的性质1.1.1 颜色的物理性质1.1.2颜色三特性1.1.3三原色与三补色 1.2 颜色空间1.2.1 与设备无关的颜色空间1.2.1 与设备相关的颜色空间 1.3 常见的多媒体系统颜色空间1.3.1 RGB颜色空间1.3.2 CMYK颜色模型1.3.3 HSB颜色…

什么是模型鲁棒性和泛化能力

目录 1、鲁棒性 2、泛化能力 1、鲁棒性 定义:在统计学领域和机器学习领域,对异常值也能保持稳定、可靠的性质,称为鲁棒性。比如说,计算机软件在输入错误、磁盘故障、网络过载或有意攻击情况下,能否不死机、不崩溃&a…

17 KVM虚拟机配置-XML配置文件示例

文章目录 17 KVM虚拟机配置-XML配置文件示例17.1 概述17.2 示例一17.3 示例二 17 KVM虚拟机配置-XML配置文件示例 17.1 概述 本节给出一个基本的AArch64虚拟机和一个x86_64虚拟机的XML配置文件示例,供参考。 17.2 示例一 一个包含基本元素的AArch64架构虚拟机的…

Psychophysiology:降维独立成分分析(rdICA)对ERP测量的影响

导读 独立成分分析(ICA)是一种有效且普遍使用的EEG信号处理工具。为了减少计算时间,许多分析管道在ICA之前降低了EEG维数。Artoni及其同事(2018)的研究中就详细地描述了这种降维ICA(rdICA)对独立成分的偶极性和可靠性的有害影响。虽然ICA对于那些直接分析独立成分感…

【网络安全】记一次网站站点渗透

前言 遇到一个站,后端是 Node.js 写的,对于这种类型的站点,一般比较难 getshell,但也实现了最终的目标,拿到后台权限 信息搜集 先进行常规的信息搜集,子域名扫描、端口扫描、目录扫描等 这个站后端脚本语…

如何实现文件共享,文件共享的设置方法-镭速

文件共享是指在计算机网络中,多个用户可以通过共享相同的文件或目录来实现数据交换和协作工作。这种方式可以使多个用户在不同地点的计算机上访问并编辑同一个文件,从而实现更加高效和便捷的合作。 实现文件共享是计算机网络中常见的需求,可以…

关于在 MySQL 排序中使用索引这件事!

文章目录 1. 排序的两种方式2. 索引排序2.1 案例一2.2 案例二2.3 案例三2.4 案例四2.5 案例五2.6 案例六2.7 案例七2.8 案例八 3. 其他情况3.1 多表联查3.2 order by null 4. 小结 前面跟小伙伴们分享的索引相关的内容,基本上都是在 where 子句中使用索引&#xff0…

java环境变量 的配置与详解

笔者这学期开始学习java课程,学习java开发首先需要配置java运行环境变量。虽然上课老师也讲了如何配置java环境变量,可是笔者的同学还是有好多都不会配置,所以笔者最近配置了特别多次java环境变量。如下笔者详细解释从JDK安装到环境变量的装配…

rsync本地或远程备份

这里写自定义目录标题 rsync作用rsync用法scp /cp/rsync区别ssh无密码登陆原理远程备份案例远程备份脚本脚本1:脚本2 本地备份常用参数 rsync作用 实现本地或远程 全量备份 增量备份 rsync用法 rsync -avz 本机文件夹 远程主机用户名IP:远程主机文件夹 scp /cp/…

发电厂能源管理远程监控解决方案

发电厂能源管理远程监控解决方案 项目背景 在我国经济快速发展的同时,对用电的要求也越来越高。为了节约能源和降低成本,国家正在积极推动发电厂的技术改造。发电厂作为发电企业的核心,其耗能状况关系到整个国家的经济发展。为进一步加强对电…

如何成为一名职业黑客?

我需要什么技能才能成为一名优秀的专业黑客?” 由于黑客是最熟练的信息技术学科之一,它需要广泛的 IT 技术和技巧知识。要真正成为一名真正的黑客,必须掌握许多技能。这是我总结所需技能的概述列表。我将这些技能分为三类,以帮助你…

家用洗地机有什么推荐的吗?好用的家用洗地机

洗地机采用高效能滚刷设计,可轻松处理多种不同材质地面的卫生问题,例如:地毯、硬地板、瓷砖等等,都能轻松完成深度清洁。而且洗地机还具有智能化设计,例如自动充电、一键启动和一键停止等设计,使它操作起来…

【Hello Algorithm】基础数据结构

作者:小萌新 专栏:算法 作者简介:大二学生 希望能和大家一起进步 本篇博客简介:介绍几种基础数据结构 基础数据结构 单链表结构翻转单链表删除节点 双链表栈和队列用栈实现队列用队列实现栈 哈希表 单链表结构 在阅读这篇文章之前…

GLM-130B-一个开放的双语通用预训练模型-论文精读

本文为作为类ChatGPT的模型ChatGLM的前期基础论文2《AN OPEN BILINGUAL PRE-TRAINED MODEL》的精读笔记,基础论文1的精读笔记请见《GLM论文精读-自回归填空的通用语言模型》。希望对大家有帮助,欢迎讨论交流。GLM-130B,主要思想概述&#xff…

Android 签名文件

签名文件相关 一、为什么需要签名?二、创建签名文件2.1、使用AS新建签名文件2.2、使用 keytool 新建签名文件 三、签名串改参考地址 一、为什么需要签名? Android系统要求每一个Android应用程序必须要经过数字签名才能够安装到系统中,也就是…

YooAsset | Unity资源管理方案

跳转官方仓库地址 一、说明 可空包、可首包DLC、可满足限制包体的需求、可玩家自己制作MOD上传到服务器、可分工程构建;支持内置渲染管线、可编程渲染管线;支持完整路径、可寻址资源定位;基于标签打包,自动分析冗余,基…