两分钟讲透缓存穿透 你明确了吗

  • 电脑网络维修
  • 2024-11-14

由于redis是内存型数据库,往往会被当做缓存经常使用,那所以问到redis关系常识点,缓存这层是绕不开的。当天咱来唠唠缓存穿透。

先来看看缓存穿透的定义:缓存穿透,留意,关键在透这个词上,就是不只把缓存层打透了,也把数据库打透了,即查问一个数据库也不存在的数据。

由于数据库不存在这个值,那必需缓存也不会有嘛,所以每次有这种渣滓查问恳求,都会打到数据库上,对数据库形成累赘。

那咋办呢?

当天引见两个方法:

布隆过滤器

置信不少同窗面试时被问过场景设计题:假设目前我们有个营销渣滓邮箱的汇总表,我们宿愿设计一个高效的阻拦过滤器,怎样设计呢?

大家必需信口开河:hashmap/hashset。

对,这个思绪一点没错,假设我们的邮箱汇总表不大,当然可以这么干。但假设汇总表稍微大一点点比如上到10亿,那就不能这么干了。普通来说面试官会回答:这么做占用空间太大,主机内存撑不住,可以换一个思绪,我们的这个业务可以准许必定的误报。

既然面试官都给揭示了,那咱就往挤压内存占用的思绪去思考,既然又宿愿缩小空间,又能接受误报,可以思考这个思绪。

首先我们先设置一个空bit数组,初始全0:

设计k个hash映射函数,这k个映射函数各不相反,而后开启一个for循环,把在汇总表中的邮箱经过这个映射函数获取数组指定位置,并置为1。比如这样:

而后这样

下次用户有想查问的邮箱,可以经过这一系列hash函数,判别对应位置能否全为1。假设是,则很大略率就是渣滓邮箱了。为啥说是很大略率,由于齐全不同的字段,在一个hash函数中,映射也会相反的。

那如何缩小误判概率?参与hash函数个数,参与这个数组长度。

最后提一下,这个数组可以就以为是布隆过滤器。

缓存空对象

这个就很好了解了。我们普通定义的查问逻辑,是这样

举例来说,我们用了个员工id和其对应的工资表。假设员工有100团体,那我们id必需是1-100陈列。假设此时有个恳求,想查问id=1000的,那必需啥也查不到,会被间接前往。

而缓存空对象,做的就是把这个值也缓存上去,即在缓存层中,参与一个id为1000,值为null的键值对。下次有对id为1000的恳求,查问间接打到缓存上,缩小了数据库压力。

但这种操作会参与内存开支,所以假设驳回这种方法,普通空对象缓存的过时期间极短。

参考:

  • 关注微信

本网站的文章部分内容可能来源于网络和网友发布,仅供大家学习与参考,如有侵权,请联系站长进行删除处理,不代表本网站立场,转载联系作者并注明出处:https://duobeib.com/diannaowangluoweixiu/4555.html

猜你喜欢

热门标签

洗手盆如何疏浚梗塞 洗手盆为何梗塞 iPhone提价霸占4G市场等于原价8折 明码箱怎样设置明码锁 苏泊尔电饭锅保修多久 长城画龙G8253YN彩电输入指令画面变暗疑问检修 彩星彩电解除童锁方法大全 三星笔记本培修点上海 液晶显示器花屏培修视频 燃气热水器不热水要素 热水器不上班经常出现3种处置方法 无氟空调跟有氟空调有什么区别 norltz燃气热水器售后电话 大连站和大连北站哪个离周水子机场近 热水器显示屏亮显示温度不加热 铁猫牌保险箱高效开锁技巧 科技助力安保无忧 创维8R80 汽修 a1265和c3182是什么管 为什么电热水器不能即热 标致空调为什么不冷 神舟培修笔记本培修 dell1420内存更新 青岛自来水公司培修热线电话 包头美的洗衣机全国各市售后服务预定热线号码2024年修缮点降级 创维42k08rd更新 空调为什么运转异响 热水器为何会漏水 该如何处置 什么是可以自己处置的 重庆华帝售后电话 波轮洗衣机荡涤价格 鼎新热水器 留意了!不是水平疑问! 马桶产生了这5个现象 方便 极速 邢台空调移机电话上门服务 扬子空调缺点代码e4是什么疑问 宏基4736zG可以装置W11吗 奥克斯空调培修官方 为什么突然空调滴水很多 乐视s40air刷机包 未联络视的提高方向 官网培修 格力空调售后电话 皇明太阳能电话 看尚X55液晶电视进入工厂形式和软件更新方法 燃气热水器缺点代码

热门资讯

关注我们

微信公众号