面试题:Redis(七)

1. 面试题

2. 缓存预热

当Redis暂时没有数据,但MySQL中有数据时,由程序员、中间件、写段程序提前访问该数据,使得数据进行回写进Redis,从而达到缓存预热的效果,这样可以使得一开始访问页面程序的用户也没有卡顿(提前将数据写入Redis即缓存预热)

 3. 缓存雪崩

发生原因:

  • Redis主机挂了,全盘崩溃,偏硬件运维的原因
  • Redis中的key大量同时过期(失效),偏软件开发的原因

3.1 解决方案

  • 将Redis中的key设置永不过期或者错开key过期失效的时间
  • Redis集群实现高可用(主从+哨兵、Redis Cluster、 开启持久化机制(aof/rdb)尽快恢复缓存集群)
  • 多缓存结合预防雪崩(ehcache本地缓存+Redis缓存)
  • 服务降级(阿里巴巴Sentinel服务限流&降级)

4. 缓存穿透

请求去查询记录时,Redis无数据,MySQL数据库中也没有数据,无法进行回写机制,那么每次有这种请求都会打到MySQL数据库中,造成后台数据库压力暴增,这种现象称为缓存穿透,此时Redis成了摆设 

4.1 解决方案 

方案一:空对象缓存或者缺省值(短期,暂时的解决方案)

第一种解决方案,回写增强

如果发生了缓存穿透,我们可以针对要查询的数据,在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相同的情况

 

黑客恶意攻击:当key拿个符合规则但数据库又不存在的key进行访问时的解决方案

  • key相同的情况下,第一次打到MySQL上,缓存回写第二次访问就会返回defaultNull缺省值,此时可以避免黑客攻击打到后台数据库
  • key不相同的情况下,由于空对象缓存回写,Redis中会存在越来越多无关紧要的key(此时需要对key设置过期时间)

方案二:Google布隆过滤器Guava解决缓存穿透(目前主流方案)

误判率越低,所消耗的资源越多(因为要更大的bit空间进行存储数据和更多的哈希函数使得数据分布的更均匀)

 

 5. 缓存击穿

大量请求同时查询同1个key,此时key刚好失效,(热点key失效)导致这些请求打到后台数据库上,该情况称为缓存击穿

该情况会导致某一时刻数据库请求量过大,压力剧增

5.1 解决方案

  • 差异化失效时间,对于热点数据直接不设置失效时间

  • 互斥更新,双检加锁 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

机器学习核心:监督学习与无监督学习

个人主页:chian-ocean 文章专栏 监督学习与无监督学习:深度解析 机器学习是现代人工智能的核心支柱,已广泛应用于从数据挖掘到计算机视觉再到自然语言处理的诸多领域。作为机器学习最主要的两大类型,监督学习(Super…

自定义注解和组件扫描在Spring Boot中动态注册Bean(一)

​ 博客主页: 南来_北往 系列专栏:Spring Boot实战 在Spring Boot中,自定义注解和组件扫描是两种强大的机制,它们允许开发者以声明性的方式动态注册Bean。这种方式不仅提高了代码的可读性和可维护性,还使得Spring Boot应用的…

【Windows】Devops jenkins pipeline调用powershell脚本 New-PSSession报错 连接到远程服务器 失败 拒绝访问

错误 powershell.exe : New-PSSession : [192.168.1.1] 连接到远程服务器 192.168.1.1 失败,并显示以下错误消息: 拒绝访问 原因 Windows 平台默认安装的jenkins启动用用户是SYSTEM 创建一个用户(如: yeqiang)隶属于Administra…

嵌入式职业规划

嵌入式职业规划 在嵌入式的软件开发中,可以分为: 嵌入式MCU软件开发工程师; 嵌入式Linux底层(BSP)软件开发工程师; 嵌入式Linux应用开发工程师; 嵌入式FPGA算法开发工程师 对于前两个阶段 …

FastGPT本地开发 之 通过Navicat管理MongoDB、PostgreSQL数据库

1. 背景 前期已经完成FastGPT的本地化部署工作,通过Docker启动FastGPT的相关容器即可运行。(共6个容器) 2.本地化开发 2.1 前置依赖 2.2 源码拉取 git clone gitgithub.com:labring/FastGPT.git2.3 数据库管理 本地化运行的FastGPT使用…

实践甘肃数据挖掘挑战赛作物与杂草的智能识别,基于YOLOv7全系列【tiny/l/x】参数模型开发构建田间低头作物杂草智能化检测识别模型

一、背景 田间杂草的有效管理是现代农业生产中面临的重要挑战之一。杂草不仅竞争作物的养分、 水分和阳光,还可能成为害虫和病原体的寄主,从而降低农作物的产量和品质。因此,开发 高效、精确的杂草检测和管理系统对于提高农业生产效率、降低化…

闺蜜机为什么会火?

闺蜜机作为一种集娱乐、学习、健身等多功能于一体的家居设备,近年来逐渐受到消费者的青睐。以下是对闺蜜机的详细介绍: 一、定义与特点 定义:闺蜜机是一种屏幕尺寸介于18~32英寸之间、可触屏、自带支架且支持多个角度调节、底部自带滑轮可移…

ROS理论与实践学习笔记——6 ROS机器人导航(仿真)

在 ROS 中,机器人导航(Navigation)是由多个功能包组合而成的系统,统称为导航功能包集(navigation stack)。它提供了一个全面的框架,使得移动机器人能够自主导航到指定目标点,同时避开…

分析调优、性能测试曲线图

目录 一、分析调优 性能测试分析的关键指标 分析步骤 收集数据: 找到瓶颈: 性能调优策略 调优硬件资源: 数据库调优: 持续监控和改进 二、性能测试曲线图 1. 轻负载阶段(Light Load) 2. 重负载…

非淘系阿里231滑块 分析

声明: 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 有相关问题请第一时间头像私信联系我删…

Leetcode—1188. 设计有限阻塞队列【中等】(多线程)

2024每日刷题(183) Leetcode—1188. 设计有限阻塞队列 C实现代码 class BoundedBlockingQueue { public:BoundedBlockingQueue(int capacity) {sem_init(&enSem, 0, capacity);sem_init(&deSem, 0, 0);}~BoundedBlockingQueue() {sem_destroy(…

WordPress 禁用上传媒体图片自动生成缩略图及多尺寸图片教程

一、在 设置-媒体-媒体设置 中几个尺寸大小的设置不勾选或设置为 0&#xff0c;如下图&#xff1a; 二、找到主题文件 function.php 文件&#xff0c;打开后&#xff0c;在 <?php 后面添加如下代码&#xff1a; function.php 文件路径一般为&#xff1a;WordPress网站根目录…

Nginx - 实现 TCP/DUP流量的按 IP 动态转发

文章目录 需求背景需求目标&#xff1a;使用场景&#xff1a;成功标准&#xff1a;技术要求&#xff1a; Ng配置测试验证 需求 Nginx Stream TCP 协议按 IP 转发 背景 为了优化网络性能和提升服务的可用性&#xff0c;我们需要在 Nginx 中配置 stream 模块&#xff0c;使其根…

力扣题解(鸡蛋掉落)

887. 鸡蛋掉落 已解答 困难 相关标签 相关企业 给你 k 枚相同的鸡蛋&#xff0c;并可以使用一栋从第 1 层到第 n 层共有 n 层楼的建筑。 已知存在楼层 f &#xff0c;满足 0 < f < n &#xff0c;任何从 高于 f 的楼层落下的鸡蛋都会碎&#xff0c;从 f 楼层或比它…

字节 HLLM 论文阅读

github连接&#xff1a;https://github.com/bytedance/HLLM 探讨问题&#xff1a; 推荐LLM的三个关键问题&#xff1a; LLM预训练权重通常被认为是对世界知识的概括&#xff0c;其对于推荐系统的价值&#xff1f;对推荐任务进行微调的必要性&#xff1f;LLM是否可以在推荐系统…

如何分离人声和背景音乐?精准音频分离,提升你的作品质量

在音频编辑和处理的领域中&#xff0c;分离人声和背景音乐是一项颇具挑战的任务&#xff0c;但也是众多音频爱好者和专业人士经常面临的需求。无论是为了制作卡拉OK伴奏、提升视频制作质量&#xff0c;还是进行音乐分析和研究&#xff0c;掌握人声与背景音乐的分离技术都显得至…

Winform和WPF的技术对比

WinForms&#xff08;Windows Forms&#xff09;和WPF&#xff08;Windows Presentation Foundation&#xff09;是用于创建桌面应用程序的两种技术。尽管两者都可以用于开发功能强大的Windows应用程序&#xff0c;但它们的设计理念、功能和开发体验都有显著区别。在本文中&…

如何将csdn文章导出为pdf

前言 在csdn上浏览文章的时候我发现有的文章支持pdf导出&#xff0c;但是有的文章不支持pdf导出&#xff0c;为了解决能将csdn上所有文章都能以pdf格式导出遂作此文。 正文 先上代码&#xff1a; (function(){use strict;var contentBox $("div.article_content")…

05 P1157 组合的输出

题目&#xff1a; 代码&#xff1a; #include<iostream> using namespace std; # define M 500 #include<algorithm>int sa[100005],k,n,count1;bool func(int n) {int mark0;if(n1){return 1;}else{for(int i2;i<n-1;i){if(n%i0){mark1;return 0;}}if(mark0)r…

力扣困难题汇总(13道)

题4&#xff08;困难&#xff09;&#xff1a; 思路&#xff1a; 找两数组中位数&#xff0c;这个看起来简单&#xff0c;顺手反应就是数第(mn)/2个&#xff0c;这个难在要求时间复杂度为log(mn)&#xff0c;所以不能这样搞&#xff0c;我的思路是&#xff1a;每次切割长度为较…