Redis缓存穿透,缓存击穿,缓存雪崩

news2024/11/25 13:11:14

文章目录

  • Redis缓存穿透,缓存击穿,缓存雪崩
  • 1. 缓存穿透
    • 1.1 解决方案1:缓存空数据
    • 1.2 解决方案2:使用布隆过滤器
      • 1.2.1 布隆过滤器介绍
  • 2. 缓存击穿
    • 2.1 解决方案1:互斥锁
    • 2.2 解决方案2:逻辑过期
  • 3. 缓存雪崩
    • 3.1 解决方案

Redis缓存穿透,缓存击穿,缓存雪崩

在这里插入图片描述

1. 缓存穿透

查询一个不存在的数据,mysql中查询不到也不会写入缓存,导致每次请求都要查mysql

例:get请求 api/products/getById/1001
在这里插入图片描述

1.1 解决方案1:缓存空数据

查询返回的数据为空,仍把这个数据进行缓存{key:1, value: null}

优点:实现简单
缺点:消耗内存可能会发生不一致情况

1.2 解决方案2:使用布隆过滤器

在这里插入图片描述
优点:内存占用少
缺点:实现负责,存在误判

1.2.1 布隆过滤器介绍

bitmap(位图):是一个以(bit)为单位的数组,数组中每个单元只能存储二进制数0或1
作用:检索一个元素是否存在一个集合中
实现:
1) 存储数据:id为1的数据,通过多个hash函数获取hash值,根据hash计算数组对应位置改为1
2) 查询数据:使用相同hash函数获取hash值,判断对应位置是否都为1
使用Guava或者Redisson实现布隆过滤器
误判率:数组越小,误判率越大,数组越大误判率越小,但是同时带来更多的内存消耗。

2. 缓存击穿

给某个key设置了过期时间,当key过期时候,对这个key有大量的并发请求进来,瞬间把mysql压垮

在这里插入图片描述

2.1 解决方案1:互斥锁

互斥锁,数据强一致,性能差

2.2 解决方案2:逻辑过期

高可用,性能优,不能保证数据绝对一致。
实现:{“id”:“1”,“title”:“xx项目”,“expire”:156414365},请求时候先检查逻辑过期时间,如果过期,就加互斥锁,生成新的线程来处理写缓存逻辑过期时间重置问题,当前线程返回过期数据;如果加互斥锁失败,就直接返回过期数据。

3. 缓存雪崩

同一时间大量的缓存key同时过期或者Redis服务宕机,导致大量的请求到达mysql,给mysql带来巨大压力

在这里插入图片描述

3.1 解决方案

  • 利用Redis集群提高服务的可用性 哨兵模式、分片集群模式
  • 给业务添加多级缓存 Guava或Caffeine
  • 给缓存业务添加降级限流策略 nginx或SpringCloud Gateway
  • 给不同的key的TTL添加随机值

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

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

相关文章

抖店和商品橱窗有什么区别?新手应该选哪个?

我是电商珠珠 临近年底了,有的人已经开始为下一年筹谋,有的去抖音做账号做直播带货,不会直播带货的就想尝试做下抖店,来为以后的经济打基础。 刚想要接触却对这类有些迷糊,发现商品橱窗和抖店都可以卖货,…

k8s基础架构

k8s基础架构 创建pod流程 (1)用户通过kubectl向api-server发起创建pod请求; (2)apiserver通过对应的kubeconfig进行认证,认证通过后将yaml中的po信息存到etcd; (3)Contr…

Oracle笔记-查看表已使用空间最大空间

目前以Oracle18c为例,主要是查这个表USER_SEGMENTS。 在 Oracle 18c 数据库中,USER_SEGMENTS 是一个系统表,用于存储当前用户(当前会话)拥有的所有段的信息。段是 Oracle 中分配存储空间的逻辑单位,用于存…

Java智慧校园源码,SaaS云平台,私有云部署,移动端小程序使用小程序原生语言开发

系统概述: 电子班牌系统又称之为智慧班牌,是当前校园数字化信息化建设、文化建设的主流,是校园日常工作安排、校园信息发布、班级文化风采展示、课堂交流的重要应用载体。智慧班牌系统在传统信息发布和校园文化展示功能基础上,融…

Polygon zkEVM ROM Spearbit审计报告解读(2023年6月Dragon Fruit升级版本)

1. 引言 前序博客有: Polygon zkEVM Hexens审计报告解读Polygon zkEVM Spearbit审计报告解读(2022年12月版本)Polygon zkEVM Spearbit审计报告解读(2023年1月版本)Polygon zkEVM Spearbit审计报告解读(20…

计网自顶向下(多线程Web代理服务器)

目录 🌼前言 🌼多线程Web代理服务器 🎒过程 🏀解释 🌳代码 🌼前言 前置知识 (1)进程 与 线程 进程与线程的一个简单解释 - 阮一峰的网络日志 (ruanyifeng.com) (…

计算机组成原理 数据的表示与运算

文章目录 数据的表示与运算数据表示定点数的表示与运算定点数的表示无符号数有符号数定点整数定点小数四码反码补码移码 总结 定点数的运算算术移位原码反码补码总结 逻辑位移循环位移总结 加减运算原码加减法补码加减法 溢出判断采用一位符号位 浮点数的表示与运算表示IEEE 75…

【排序算法】【二叉树】【滑动窗口】LeetCode220: 存在重复元素 III

作者推荐 【二叉树】【单调双向队列】LeetCode239:滑动窗口最大值 本文涉及的基础知识点 C算法&#xff1a;滑动窗口总结 题目 给你一个整数数组 nums 和两个整数 indexDiff 和 valueDiff 。 找出满足下述条件的下标对 (i, j)&#xff1a; i ! j, abs(i - j) < indexDi…

2024校招测试工程师笔试——经典错题记录和解析

大家好&#xff0c;这篇文章记录几个测开方向经典的例题&#xff0c;并给出相应解析&#xff0c;欢迎给出你的看法 下列关于软件性能测试的说法中&#xff0c;正确的是&#xff1a;&#xff08; &#xff09; A 性能测试的目的不是为了发现软件缺陷 B 压力测试与负载测试的目的…

Ansible自动化运维(一)简介及部署、清单

&#x1f468;‍&#x1f393;博主简介 &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01; &#x1f40b; 希望大家多多支…

腾讯云轻量应用服务器“镜像”如何选择比较好?

腾讯云轻量应用服务器镜像怎么选择&#xff1f;镜像是指轻量服务器的操作系统&#xff0c;可以选择宝塔Linux面板8.0.4腾讯云专享版&#xff0c;如果需要Win系统建议选择Windows Server 2012 R2 中文版&#xff0c;腾讯云服务器网txyfwq.com分享腾讯云轻量应用服务器镜像操作系…

如何使用Pyxamstore快速解析Xamarin AssemblyStore文件

关于Pyxamstore Pyxamstore是一款针对Xamarin AssemblyStore文件&#xff08;assemblies.blob&#xff09;的强大解析工具&#xff0c;该工具基于纯Python 2.7开发&#xff0c;支持从一个APK文件中解包并重封装assemblies.blob和assemblies.manifest Xamarin文件。 什么是ass…

谷歌Gemini Pro模型 Api 调用

写在前面 本篇博客主要介绍如下内容 Gemini Pro模型 ApiKey的申请 Gemini Pro模型 Api调用的方法 几个模型Api调用的demo程序 调用Gemini Pro模型中可能遇到的问题及解决方案 模型 ApiKey的申请 注册好Google账号&#xff0c;并在浏览器完成登录访问 : https://makersuite.g…

低成本TB级数据库技术选型之思考两三点

一、背景 前段时间在搞毕业论文的选题&#xff0c;最头疼的就是大量的文献检索和阅读&#xff0c;从研究的角度上我们可以将文献分为四类&#xff1a; 理论文献&#xff1a;为研究提供理论的框架和基础的文献。这些文献可能并不会和所做的研究直接相关&#xff0c;甚至由于理…

梦里河山:自在正定,跨年寄语

‍ ‍雏鹰高飞&#xff0c;我们也渐渐失去了新年第一天去香炉峰顶祈福的动力。向往着梦里河山&#xff0c;于是启动了这次的跨年之旅。 雾途 放假的第一天&#xff0c;早早起床&#xff0c;7点钟开车驱往赵子龙的故乡——正定。万万没有想到&#xff0c;出了五环&#xff0c;晨…

老品牌新玩法?经济内循环下逆势开出100多家门店,他被央视青睐!

2023年12月26日&#xff0c;CCTV-2整点财经栏目以“抢抓复苏机遇&#xff0c;连锁品牌主打新活力”为主题&#xff0c;播报我国老品牌发展现状&#xff0c;新消费时代以来&#xff0c;消费者的选择多样化、分众化、小众化、个性化&#xff0c;给“老品牌”发展带来前所未有的挑…

计算机毕业设计——SpringBoot社区物业管理系统(附源码)

1&#xff0c; 概述 1.1 课题背景 近几年来&#xff0c;随着物业相关的各种信息越来越多&#xff0c;比如报修维修、缴费、车位、访客等信息&#xff0c;对物业管理方面的需求越来越高&#xff0c;我们在工作中越来越多方面需要利用网页端管理系统来进行管理&#xff0c;我们…

Java商城 免 费 搭 建:鸿鹄云商实现多种商业模式,VR全景到SAAS,应有尽有

鸿鹄云商 b2b2c产品概述 【b2b2c平台】&#xff0c;以传统电商行业为基石&#xff0c;鸿鹄云商支持“商家入驻平台自营”多运营模式&#xff0c;积极打造“全新市场&#xff0c;全新 模式”企业级b2b2c电商平台&#xff0c;致力干助力各行/互联网创业腾飞并获取更多的收益。从消…

Vue-响应式数据

一、ref创建基本类型的响应式数据 vue3可以使用ref、reactive去定义响应式数数据。 知识点汇总 使用ref需要先引入ref&#xff0c;import {ref} from vue在模板 template 中使用了添加ref 的响应式数据&#xff0c;变量的后面不用添加.value所有js代码里面&#xff0c;去操作r…

Python进行批量字符替换的3种方法

一、问题的提出 之前&#xff0c;我写过一篇如何在word中计算数学算式&#xff1a; 如何用Python批量计算Word中的算式-CSDN博客 为了计算算式&#xff0c;就需要对算式进行格式化&#xff0c;把不规则的算式转换成规则的算式&#xff0c;这时就会涉及到一些字符的批量替换。…