Redis面试题-缓存雪崩、缓存穿透、缓存击穿问题

【精选】30+Redis面试题整理(2024)附答案 自用redis面试圣经,记录了个人面试中经常问到的面试题、收集了网络热门面试题。 阅读详情

1 穿透: 两边都不存在(皇帝的新装) (黑名单) (布隆过滤器)

2 击穿:一个热点的key失效了,这时大量的并发请求直接到达数据库. (提前预热)

3 雪崩:大量key同时失效 (避免大量的key同一时间失效,错峰)

缓存击穿


      突发热点访问时,热点数据在Redis缓存中不存在或已过期。大量的对热点数据的访问,都将直接访问数据库,造成数据库访问压力短时激,从而增造成故障。

   缓存穿透


       数据在Redis缓存和数据库中都不存在。大量访问这种数据时,数据库频繁查找数据,造成压力过大,从而产生故障。应用场景: 壹:非正常数据访问;贰:黑客攻击。

缓存雪崩


       大量key集中过期,数据库短时访问量激增。类似击穿的发生场景。

二、解决方案 
      1.解决缓存击穿
提前预设热门缓存数据
实时调整过期时间、自动续期
使用锁
缓存数据不存在时,把数据库数据放入缓存
       2.解决缓存穿透
对不存在的数据进行数据空值缓存
设置白名单;(•可访问的数据id作为偏移值存入bitmaps;•访问时先检查bitmaps)
使用布隆过滤器
对黑客攻击进行实时监控
       3.解决缓存雪崩
多级缓存架构(Nginx-本地缓存(ehcache/guava) -Redis)
锁或队列对并发访问进行序列化
Key设置过期标志,对即将过期数据进行提前更新,自动续期(类似击穿的解决方案)
数据的过期时间使用随机值,分散过期时间

android 运动目标检测_MindSpore应用案例:AI对篮球运动员目标的检测 MindSpore作为一个端边云协同的开源的全场景AI框架,今年3月份开源以来,受到了业界的广泛关注和应用,欢迎大家参与开源贡献、模型众智合作、行业创新与应用、学术合作等,贡献您在云侧、端侧 (HiMindSpore 应用程序)、边侧以及安全领域的应用案例。MindSpore与您在AI领域共同成长,让AI使能千行百业,释放出强大的生产力。本文讲述的是MindSpore对篮球运动员目标的检测应用,通... 阅读详情

相关推荐

工业质检实战:用海康VisionMaster的BLOB分析搞定PCB焊点缺陷检测

本文详细介绍了如何利用海康VisionMaster平台的BLOB分析技术,构建一套针对PCB焊点缺陷的自动化视觉检测方案。文章从核心原理出发,重点阐述了如何通过动态阈值分割和模板匹配定位,克服工业现场光照不均、位置偏移等挑战,实现虚焊、漏焊等缺陷的精准、稳定检测,并提供了实战调优与系统集成的关键思路。

weixin_29091105的博客 560

Redis面试题全面解析,Redis性能优化全面指南,Redis缓存问题全面解析:雪崩、穿透与击穿

本文全面解析Redis面试常见问题,分为基础概念、高频问题、进阶问题、实战场景、运维优化和性能问题六大模块。重点内容包括:Redis基础概念如数据类型、持久化机制;核心优势如单线程模型和I/O多路复用;常见缓存问题(雪崩、穿透、击穿)的解决方案;生产环境优化策略如key设计、连接池管理和Pipeline使用;以及性能监控与故障处理方法。文章还深入探讨了Redis在多线程演变、高可用架构设计和延迟队列实现等高级应用场景,并提供了详细的性能优化指南,涵盖数据结构选择、大Key处理、内存配置和CPU优化等关键点。

子柚的博客 799

STM32F103内部晶振配置实战:从代码修改到频率验证(附工程模板)

本文详细介绍了STM32F103内部晶振(HSI)的配置实战,从代码修改到频率验证的全流程,并附赠可直接使用的工程模板。通过对比HSI与外部晶振的优缺点,帮助开发者在成本敏感和空间受限的应用中实现稳定时钟配置,同时提供频率校准和常见问题排查方法。

weixin_29171087的博客 322

【面试题】Redis缓存问题全解:击穿、雪崩与穿透

定义:当某个热点数据失效时,大量的请求直接访问数据库,导致数据库压力过大。解决方案:互斥锁:在查询数据前,使用Redis的SETNX命令设置一个互斥锁,确保同时只有一个请求去查询数据库。缓存空对象:如果查询数据库没有结果,也将其缓存起来,但设置一个较短的过期时间。预加载:对于热点数据,在数据加载到数据库时就同时加载到缓存中。通过上述分析和解决方案,我们可以更有效地处理Redis缓存层可能遇到的问题,确保应用程序的稳定性和性能。

十一逐星的博客 1199

自适应滤波算法综述

自适应滤波算法综述

xdzhujy的博客 5万+

VS2022配置Qt6

VS2022配置QT教程

Life is a struggle ! 6359

Redis基础面试题:Redis中的缓存雪崩、缓存穿透与缓存击穿问题及其解决方案

通过以上讨论,Victor展示了其对Redis缓存问题的深入理解,并提出了多种解决方案。面试官对他的回答表示满意,认为他在技术深度和系统性思维方面表现突出。

qq_61302385的博客 778

组态王7.5和SQLsever数据库交互

摘要:本文详细介绍了组态王7.5与SQL Server 2016数据库交互的实现流程,包括建立连接、数据存储与查询操作。主要内容涵盖ODBC数据源配置、数据库表格创建、数据插入及查询功能实现(含日期控件查询)

gsjkwg的博客 1577

Redis必问面试题,看完还不懂请来打我(缓存穿透,缓存击穿,缓存雪崩,一致性问题,热key,大key)

如果都是1,则被检元素很可能在。缓存在某个时间点过期的时候,恰好在这个时间点对这个Key有大量的并发请求过来,这些请求发现缓存过期一般会从数据库中加载数据并回设到缓存,这个时候大并发的请求可能会瞬间把后端DB压垮。缺点:会造成写一致问题,当数据库数据发生更新时,缓存中的数据不会及时更新,这样会造成数据库中的数据与缓存中的数据的不一致,应用会从缓存中读取到脏数据。可采用延时双删策略处理。在缓存之前在加一层布隆过滤器,在查询的时候先去布隆过滤器查询 key 是否存在,如果不存在就直接返回,存在再查缓存和DB。

零一的博客 4894

C#项目实战——【实例】企业人事管理系统(二):4、数据库与数据表设计;5、创建项目;

(1)展开新建的db_PWMS数据库节点,选中“表”节点,单击鼠标右键,在弹出的快捷菜单中选择“新建表”命令,如下图:(2)在SQL Server 2008管理器的右边显示一个新表,这里输入要创建的表中所需要的字段,并设置主键,如下图:(3)单击“保存”按钮,弹出“选择名称”对话框,如下图,输入要新建的表名“tb_Login”,单击“确定”按钮,即可在数据库中添加一个表。

做有价值的事,积累有价值的笔记! 1621

YOLOv8工业缺陷检测实战:攻克光照不均难题,精度从70%到92%的全流程优化(附缺陷数据集)

YOLOv8在工业缺陷检测中突破光照不均难题,核心是“硬件控光+数据造景+模型聚焦+训练攻坚硬件控光:从源头减少光照变异,降低算法难度;数据造景:用CLAHE、合成样本让模型“见过足够多的光照情况”;模型聚焦:用ECA注意力和Focal-EIoU损失,让模型盯住缺陷而非光照;训练攻坚:分阶段+难例挖掘,强迫模型学习薄弱点。这套方案已在汽车轴承、手机外壳、PCB板3类产线落地,平均精度提升20%+,漏检率控制在0.08%以内,完全满足工业级要求。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1195

Redis必问面试题,看完还不懂请来打我(缓存穿透,缓存击穿,缓存雪崩,一致性问题,热key,大key)(转载)

缓存穿透 缓存穿透: 在高并发下查询key不存在的数据,会穿过缓去存查询数据库。导致数据库压力过大而宕机。 解决方案: 对查询结果为空的情况也进行缓存,缓存时间(ttl)设置短一点,或者该key对应的数据insert了之后清理缓存。 缺点:缓存太多空值占用了更多的空间 使用布隆过滤器。在缓存之前在加一层布隆过滤器,在查询的时候先去布隆过滤器查询 key 是否存在,如果不存在就直接返回,存在再查缓存和DB。 布隆过滤器原理: 当一个元素被加入集合时,将这个元素通过n次Hash函数结果映射成一个数组中的n个点,

blingblingb__的博客 227

从原理到落地:监控 SAP OData bgRFC 队列的全景实践指南

摘要(150字) 本文系统讲解SAP Gateway/Backend场景中bgRFC队列的监控方法。内容涵盖:1)监控必要性——确保异步可靠传输,及时识别失败消息;2)两种服务质量(EO/EOIO)对监控策略的影响;3)通过事务码SBGRFCMON和SPRO路径访问监控界面;4)关键授权S_BGRFC的配置要求;5)详细操作指南包括筛选条件和动作选项;6)标准巡检脚本;7)三个典型案例(认证错误、顺序阻塞、调度压力)的诊断与修复方案。全文提供完整的监控方法论和实战指导。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 284

黑马面试八股文之redis穿透,击穿,雪崩

Rdeis几乎是面试必考的内容,而穿透缓存雪崩三兄弟无疑是重点中的重点,本文将帮助你快速梳理里面的知识点,还有面试题巩固~

qq_74162869的博客 1206

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

大厂高频面试题:Redis三大缓存问题(缓存穿透、雪崩、击穿)的原因及解决方案详解,面试必问,建议收藏

恶意请求:黑客暴力扫描不存在的ID(如-1、0等非法值)逻辑缺陷:业务未校验参数有效性,直接透传至数据库方案一:布隆过滤器(Bloom Filter)原理:预加载所有可能存在的数据哈希值到布隆过滤器中,查询时先判断数据是否存在。代码示例 ✅ 优点:内存占用少(1百万数据仅需1MB) ❌ 缺点:存在误判率(可配置)方案二:空值缓存原理:将查询结果为空的键也存入缓存,设置较短过期时间(如5分钟)。代码示例 ✅ 优点:实现简单 ❌ 缺点:可能缓存大量无效Key电商商品ID扫描攻击社交平台查询已注销用户

Fox爱分享的专栏 673

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

阿里面试:如何彻底解决 缓存击穿、缓存穿透、缓存雪崩三大问题?

阿里面试:缓存击穿、缓存穿透、缓存雪崩 3大问题,如何彻底解决?(本题)Redis脑裂,如何预防?Redis锁如何续期?Redis锁超时,任务没完怎么办?京东面试:Redis分布式 锁失效了,怎么办?阿里面试:如何 彻底解决Redis热点Key问题?遇到上面的面试题,可以按照尼恩的深度 梳理,进行 深度回答,可以充分展示一下大家雄厚的 “技术肌肉”,让面试官爱到 “不能自已、口水直流”,然后实现”offer直提”。在面试之前,建议大家系统化的刷一波 5000页《尼恩Java面试宝典PDF。

架构师尼恩 1869

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Redis面试精讲 Day 21:Redis缓存穿透、击穿、雪崩解决方案

问题类型 | 定义 | 关键特征 | 危害程度 || 缓存穿透 | 查询不存在的数据,绕过缓存直击数据库 | 查询key不存在,高并发无效查询 | ★★★ || 缓存击穿 | 热点key过期瞬间,大量请求直达数据库 | 单个热点key失效,突发高并发 | ★★ || 缓存雪崩 | 大量key同时失效,导致请求风暴 | 多key集中失效,系统级崩溃 | ★★★★ |三大缓存问题的本质区别和识别方法布隆过滤器在防护缓存穿透中的应用互斥锁与逻辑过期的击穿解决方案对比。

在未来等你的专栏 1376

redis面试题

(记忆方式:访问不存在的数据。布隆过滤器。误判率5%。缓存穿透是指访问一个不存在的数据,redis中没有会去数据库查询,如果数据库没有就不会写入redis,那么大量请求这个不存在的数据,就会导致大量的请求落到数据库上,压跨数据库。我们可以使用布隆过滤器解决这个问题,布隆过滤器可以快速判断某个值是否不存在于集合中,我们当时是用redisson实现的布隆过滤器。它的原理是初始化一个大数组,里面存放的是0或1,初始化都是0;

qq_54765948的博客 1587

程序员面试题之Redis缓存穿透,缓存击穿,缓存雪崩,解决这些问题的关键在于合理设置缓存的过期时间、使用锁机制来保护缓存的加载过程、 使用多级缓存架构和预加载机制来提高系统的容错性和性能。

Redis(Remote Dictionary Server ),即远程字典服务

凯歌技术控团队 513

Redis缓存击穿、缓存、缓存雪崩?全是伪命题?

我们可以通过 Redis 实现一个布隆过滤器,将 MySQL 中所有记录的 key 存储在布隆过滤器中,在请求访问 MySQL 前先通过布隆过滤器判定其是否存在,判定为不存在的请求直接丢弃,判定存在的请求再访问 MySQL 进行查询,从而避免了对 MySQL 的查询压力。网上大多数的说法,缓存穿透产生的原因是,黑客恶意攻击请求不存在于 Redis 和 MySQL 中的数据,使得这些请求绕过 Redis 全部打在 MySQL 上,使其压力剧增从而导致系统崩溃。

weixin_74412978的博客 906

【redis面试题】高频redis面试题

候选人嗯~~,我想一下缓存穿透是指查询一个一定不存在的数据,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到 DB 去查询,可能导致 DB 挂掉。这种情况大概率是遭到了攻击。解决方案的话,我们通常都会用布隆过滤器来解决它2.面试官候选人嗯,是这样~布隆过滤器主要是用于检索一个元素是否在一个集合中。我们当时使用的是redisson实现的布隆过滤器。它的底层主要是先去初始化一个比较大数组,里面存放的二进制0或1。

qq_50446805的博客 1088

【Redis-面试题及持久化方案】Redis相关面试题(缓存穿透、缓存击穿、缓存雪崩) & Redis两种持久化方案详情对比(RDB、AOF)

Redis 会定期保存数据快照至一个 rbd 文件中,并在启动时自动加载 rdb 文件,恢复之前保存的数据。意为在seconds秒内如果发生了changes次数据修改,则进行一次RDB快照保存,例如会让 Redis 每60秒检查一次数据变更情况,如果发生了100次或以上的数据变更,则进行 RDB 快照保存。可以配置多条 save 指令,让 Redis 执行多级的快照保存策略。Redis 默认开启 RDB 快照。也可以通过 SAVE 或者 BGSAVE 命令手动触发 RDB 快照保存。

weixin_53543905的博客 812

黑马Java面试教程_P2_Redis

现在几乎所有项目,都要使用Redis,面试过程中占比很高,所以是重点学习的内容。Redis的内容分类为Redis的使用场景,Redis其他面试问题。面试官问使用场景的时候经常与实际业务进行关联,Redis使用场景一般为缓存(穿透、击穿、雪崩、双写一致、持久化、数据过期、淘汰策略)、分布式锁(setnx,rediness)、计数器、保存token、消息队列、延迟队列(三个数据类型:普通String、List、ZSet)。主要是缓存和分布式锁。其他面试题:(1)集群(主从、哨兵、集群)。(2)事务。

buyaotutou的博客 2006

redis常见面试题

文章目录redis常见面试题缓存雪崩缓存穿透缓存击穿缓存并发竞争缓存和数据库双写不一致缓存预热 redis常见面试题 缓存雪崩 解释:数据未加载到缓存中,或者缓存同一时间大面积的失效,从而导致所有请求都去查数据库,导致数据库CPU和内存负载过高,甚至宕机。 过程: 大量缓存key失效(或者redis集群宕机) 大量请求访问redis redis宕机,请求转向数据库 数据库扛不住宕机 服务器集群雪崩,整个系统崩溃 解决方案: 对缓存做高可用,如 Redis Sentinel 和 Redis Cluste

刘翼荣的博客 301

必备redis6教程-分布式缓存Redis6.X+高可用集群课程介绍-小滴课堂

第十二章 分布式缓存面试题+SpringCache解决方案 第1集 【面试题】分布式缓存必考题之缓存击穿+解决方案 简介:分布式缓存必考题之缓存击穿+解决方案 缓存击穿 (某个热点key缓存失效了) 缓存中没有但数据库中有的数据,假如是热点数据,那key在缓存过期的一刻,同时有大量的请求,这些请求都会击穿到DB,造成瞬时DB请求量大、压力增大。 和缓存雪崩的区别在于这里针对某一key缓存,后者则是很多key。 预防 设置热点数据不过期

XDCLASS21的博客 353

解密Redis:应对面试中的缓存相关问题

在高并发的情况下,缓存雪崩和缓存击穿是常见的问题,我们需要采取相应的缓解措施,如设置合理的缓存过期时间和使用热点数据预热等。当启用RDB持久化时,Redis会周期性地将内存中的数据生成一个快照文件(dump.rdb),该文件是二进制格式的,包含了当前数据库中的所有键值对数据。此时,如果主节点宕机,从节点可能会被提升为新的主节点,而现在来了一个新的线程,再次加锁,就会在新的主节点上成功加锁。在哨兵模式中,哨兵进程会监控主从节点的状态,当主节点宕机时,会自动将某个从节点升级为新的主节点,保证数据的连续性。

学IT,找陈寒 1332
上一篇: Docker打包前后端项目
下一篇: 阿里云效CICD流水线提交前后端项目
涵冰...
博客等级 码龄4年 2438粉丝 243原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

涵冰...

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值