沧州三亚菏泽经济预测自然
投稿投诉
自然科学
知识物理
化学生物
地理解释
预测理解
本质社会
人类现象
行为研究
经济政治
心理结构
关系指导
人文遗产
菏泽德阳
山西湖州
宝鸡上海
茂名内江
三亚信阳
长春北海
西安安徽
黄石烟台
沧州湛江
肇庆鹤壁
六安韶关
成都钦州

面试官大量请求Redis不存在的数据,影响数据库,该如何解决

1月21日 乔了了投稿
  大家都知道,在计算机中,IO一直是一个瓶颈,很多框架以及技术甚至硬件都是为了降低IO操作而生,今天聊一聊过滤器,先说一个场景:
  我们业务后端涉及数据库,当请求消息查询某些信息时,可能先检查缓存中是否有相关信息,有的话返回,如果没有的话可能就要去数据库里面查询,这时候有一个问题,如果很多请求是在请求数据库根本不存在的数据,那么数据库就要频繁响应这种不必要的IO查询,如果再多一些,数据库大多数IO都在响应这种毫无意义的请求操作。
  那么如何将这些请求阻挡在外呢?过滤器由此诞生!布隆过滤器
  布隆过滤器(BloomFilter)大概的思路就是,当你请求的信息来的时候,先检查一下你查询的数据我这有没有,有的话将请求压给数据库,没有的话直接返回,是如何做到的呢?
  如图,一个bitmap用于记录,bitmap原始数值全都是0,当一个数据存进来的时候,用三个Hash函数分别计算三次Hash值,并且将bitmap对应的位置设置为1。
  上图中,bitmap的1,3,6位置被标记为1,这时候如果一个数据请求过来,依然用之前的三个Hash函数计算Hash值,如果是同一个数据的话,势必依旧是映射到1,3,6位,那么就可以判断这个数据之前存储过,如果新的数据映射的三个位置,有一个匹配不上,假如映射到1,3,7位,由于7位是0,也就是这个数据之前并没有加入进数据库,所以直接返回。布隆过滤器的问题
  上面这种方式,应该你已经发现了,布隆过滤器存在一些问题:
  第一方面,布隆过滤器可能误判:
  假如有这么一个情景,放入数据包1时,将bitmap的1,3,6位设置为了1,放入数据包2时将bitmap的3,6,7位设置为了1,此时一个并没有存过的数据包请求3,做三次哈希之后,对应的bitmap位点分别是1,6,7,这个数据之前并没有存进去过,但是由于数据包1和2存入时将对应的点设置为了1,所以请求3也会压倒数据库上,这种情况,会随着存入的数据增加而增加。
  第二方面,布隆过滤器没法删除数据,删除数据存在以下两种困境:
  一是,由于有误判的可能,并不确定数据是否存在数据库里,例如数据包3。牛逼啊!接私活必备的N个开源项目!赶快收藏吧
  二是,当你删除某一个数据包对应位图上的标志后,可能影响其他的数据包,例如上面例子中,如果删除数据包1,也就意味着会将bitmap1,3,6位设置为0,此时数据包2来请求时,会显示不存在,因为3,6两位已经被设置为0。
  布隆过滤器增强版
  为了解决上面布隆过滤器的问题,出现了一个增强版的布隆过滤器(CountingBloomFilter),这个过滤器的思路是将布隆过滤器的bitmap更换成数组,当数组某位置被映射一次时就1,当删除时就1,这样就避免了普通布隆过滤器删除数据后需要重新计算其余数据包Hash的问题,但是依旧没法避免误判。
  布谷鸟过滤器
  为了解决布隆过滤器不能删除元素的问题,论文《CuckooFilter:BetterThanBloom》作者提出了布谷鸟过滤器。相比布谷鸟过滤器,布隆过滤器有以下不足:查询性能弱、空间利用效率低、不支持反向操作(删除)以及不支持计数。
  查询性能弱是因为布隆过滤器需要使用多个hash函数探测位图中多个不同的位点,这些位点在内存上跨度很大,会导致CPU缓存行命中率低。
  空间效率低是因为在相同的误判率下,布谷鸟过滤器的空间利用率要明显高于布隆,空间上大概能节省40多。不过布隆过滤器并没有要求位图的长度必须是2的指数,而布谷鸟过滤器必须有这个要求。从这一点出发,似乎布隆过滤器的空间伸缩性更强一些。
  不支持反向删除操作这个问题着实是击中了布隆过滤器的软肋。在一个动态的系统里面元素总是不断的来也是不断的走。布隆过滤器就好比是印迹,来过来就会有痕迹,就算走了也无法清理干净。比如你的系统里本来只留下1kw个元素,但是整体上来过了上亿的流水元素,布隆过滤器很无奈,它会将这些流失的元素的印迹也会永远存放在那里。随着时间的流失,这个过滤器会越来越拥挤,直到有一天你发现它的误判率太高了,不得不进行重建。
  布谷鸟过滤器在论文里声称自己解决了这个问题,它可以有效支持反向删除操作。而且将它作为一个重要的卖点,诱惑你们放弃布隆过滤器改用布谷鸟过滤器。为啥要取名布谷鸟呢?
  有个成语,鸠占鹊巢,布谷鸟也是,布谷鸟从来不自己筑巢。它将自己的蛋产在别人的巢里,让别人来帮忙孵化。待小布谷鸟破壳而出之后,因为布谷鸟的体型相对较大,它又将养母的其它孩子(还是蛋)从巢里挤走从高空摔下夭折了。布谷鸟哈希
  最简单的布谷鸟哈希结构是一维数组结构,会有两个hash算法将新来的元素映射到数组的两个位置。如果两个位置中有一个位置为空,那么就可以将元素直接放进去。另外,搜索公众号顶级科技后台回复API接口,获取一份惊喜礼包。
  但是如果这两个位置都满了,它就不得不鸠占鹊巢,随机踢走一个,然后自己霸占了这个位置。p1hash1(x)lp2hash2(x)l复制代码
  不同于布谷鸟的是,布谷鸟哈希算法会帮这些受害者(被挤走的蛋)寻找其它的窝。因为每一个元素都可以放在两个位置,只要任意一个有空位置,就可以塞进去。
  所以这个伤心的被挤走的蛋会看看自己的另一个位置有没有空,如果空了,自己挪过去也就皆大欢喜了。但是如果这个位置也被别人占了呢?好,那么它会再来一次鸠占鹊巢,将受害者的角色转嫁给别人。然后这个新的受害者还会重复这个过程直到所有的蛋都找到了自己的巢为止。布谷鸟哈希的问题
  但是会遇到一个问题,那就是如果数组太拥挤了,连续踢来踢去几百次还没有停下来,这时候会严重影响插入效率。这时候布谷鸟哈希会设置一个阈值,当连续占巢行为超出了某个阈值,就认为这个数组已经几乎满了。这时候就需要对它进行扩容,重新放置所有元素。
  还会有另一个问题,那就是可能会存在挤兑循环。比如两个不同的元素,hash之后的两个位置正好相同,这时候它们一人一个位置没有问题。但是这时候来了第三个元素,它hash之后的位置也和它们一样,很明显,这时候会出现挤兑的循环。不过让三个不同的元素经过两次hash后位置还一样,这样的概率并不是很高,除非你的hash算法太挫了。
  布谷鸟哈希算法对待这种挤兑循环的态度就是认为数组太拥挤了,需要扩容(实际上并不是这样)。
  优化
  上面的布谷鸟哈希算法的平均空间利用率并不高,大概只有50。到了这个百分比,就会很快出现连续挤兑次数超出阈值。这样的哈希算法价值并不明显,所以需要对它进行改良。
  改良的方案之一是增加hash函数,让每个元素不止有两个巢,而是三个巢、四个巢。这样可以大大降低碰撞的概率,将空间利用率提高到95左右。
  另一个改良方案是在数组的每个位置上挂上多个座位,这样即使两个元素被hash在了同一个位置,也不必立即鸠占鹊巢,因为这里有多个座位,你可以随意坐一个。除非这多个座位都被占了,才需要进行挤兑。
  很明显这也会显著降低挤兑次数。这种方案的空间利用率只有85左右,但是查询效率会很高,同一个位置上的多个座位在内存空间上是连续的,可以有效利用CPU高速缓存。
  所以更加高效的方案是将上面的两个改良方案融合起来,比如使用4个hash函数,每个位置上放2个座位。这样既可以得到时间效率,又可以得到空间效率。这样的组合甚至可以将空间利用率提到高99,这是非常了不起的空间效率。布谷鸟过滤器
  布谷鸟过滤器和布谷鸟哈希结构一样,它也是一维数组,但是不同于布谷鸟哈希的是,布谷鸟哈希会存储整个元素,而布谷鸟过滤器中只会存储元素的指纹信息(几个bit,类似于布隆过滤器)。这里过滤器牺牲了数据的精确性换取了空间效率。正是因为存储的是元素的指纹信息,所以会存在误判率,这点和布隆过滤器如出一辙。
  首先布谷鸟过滤器还是只会选用两个hash函数,但是每个位置可以放置多个座位。这两个hash函数选择的比较特殊,因为过滤器中只能存储指纹信息。当这个位置上的指纹被挤兑之后,它需要计算出另一个对偶位置。而计算这个对偶位置是需要元素本身的,我们来回忆一下前面的哈希位置计算公式。fpfingerprint(x)p1hash1(x)lp2hash2(x)l
  我们知道了p1和x的指纹,是没办法直接计算出p2的。
  特殊的hash函数
  布谷鸟过滤器巧妙的地方就在于设计了一个独特的hash函数,使得可以根据p1和元素指纹直接计算出p2,而不需要完整的x元素。fpfingerprint(x)p1hash(x)p2p1hash(fp)异或
  从上面的公式中可以看出,当我们知道fp和p1,就可以直接算出p2。同样如果我们知道p2和fp,也可以直接算出p1对偶性。p1p2hash(fp)
  所以我们根本不需要知道当前的位置是p1还是p2,只需要将当前的位置和hash(fp)进行异或计算就可以得到对偶位置。而且只需要确保hash(fp)!0就可以确保p1!p2,如此就不会出现自己踢自己导致死循环的问题。
  也许你会问为什么这里的hash函数不需要对数组的长度取模呢?实际上是需要的,但是布谷鸟过滤器强制数组的长度必须是2的指数,所以对数组的长度取模等价于取hash值的最后n位。在进行异或运算时,忽略掉低n位之外的其它位就行。将计算出来的位置p保留低n位就是最终的对偶位置。
  原文链接:https:mp。weixin。qq。comsDlMLJabxVikGe38t7Q9w
投诉 评论

深化资本市场改革推动企业登高上市湘潭市电机车厂有限公司启动上红网时刻湘潭县频道讯(记者贺帆张学实习生杨畅)12月26日上午,湘潭市电机车厂有限公司上市启动暨中介机构签约仪式举行。签约现场。湘潭市电机车厂有限公司是一家集地下工……男篮首发乔帅重用辽宁队,广东队遭弃用,12人大名单初步确定!拿男主帅乔尔科维奇上任一段时间了,为了备战男篮世界杯第六个窗口期的预选赛,两场比赛,乔帅确定了18人大名单,但是对选人用人上,许多网友纷纷表明,有许多有实力的球员没有入选!但是……汤圆不要水煮了,教你特色吃法,不用油炸,蓬松柔软,太香了头条创作挑战赛元宵佳节大家家里都吃什么呢?在我这边都是吃汤圆,也有人吃饺子,看个人喜好。每个地方这个汤圆的叫法不同,有些叫元宵,个头比南方的汤圆大一点。外皮口感馅料非常丰……5部心痒痒女性向尺度欧美剧!爱欲交织满足所有幻想高颜值、霸道总裁、校园18禁忌。。。。。。5部意味深长的女性向片单!《亢奋》以青少年校园为背景,绝对是今年讨论度最高的大尺度美剧。剧情充满18禁,内容大胆、煽情又迷……荔枝去年首次实现全年盈利,将全面推进AI聊天机器人业务3月16日美股盘前,中国在线音频第一股荔枝集团(NASDAQ:LIZI)发布了2022年第四季度及全年财报,连续第五个季度实现GAAP层面盈利。财报显示,荔枝在保持全年收……宝妈用6样食材做晚餐,搭配三道菜,下酒下饭的齐全,全家都爱吃天气变冷了,天黑的也早了,好多事还没怎么做就又到了做晚饭的时间,依然是先翻冰箱再搭配怎样做菜,这一顿食材还挺丰盛,找出6种食材,家人有口福了,还都是比较好消化的,营养很丰富,看……轻薄便捷的办公利器是什么样的?雷柏轻薄办公套装给你答案现在的年轻人,每天的工作大多都是坐在电脑面前不停的敲着键盘,按着鼠标。不知道你们是什么感受,反正我每次坐在工位上看着我的鼠标键盘,我是打心里抗拒。俗话说,工欲善其事必先利其器,……100元钱在老挝能有多潇洒?旅游过的人告诉你像不要钱似的越来越多的小伙伴不再满足于物质上的追求,因为时代在不断地发展,人们的钱袋子越来越鼓,而大众迫切需要做的就是释放压力,寻求精神上的解放。不得不说,人们在释放压力的时候,选择……面试官大量请求Redis不存在的数据,影响数据库,该如何解决大家都知道,在计算机中,IO一直是一个瓶颈,很多框架以及技术甚至硬件都是为了降低IO操作而生,今天聊一聊过滤器,先说一个场景:我们业务后端涉及数据库,当请求消息查询某些信……婴儿嗓子发炎发烧几天好?应该多注意室内的环境清洁,避免病从口入。婴儿嗓子发炎发烧后,会导致发烧,家长应该做好护理宝宝的措施。那么,婴儿嗓子发炎发烧几天能好?一起来了解下吧。婴儿嗓子发……乱世佳人结局里瑞德最后离开了斯嘉丽,那他还有可能回来吗?相信很多网友都对这部电影印象深刻。瑞德和斯嘉丽分手的结局,应该是令所有《乱世佳人》的读者和观众遗憾的事,多年以来,他们到底会不会再续前缘,也是大家最想知道的事。从前不理解……谈谈羽毛球李永波的自信和张军的务实,国羽需要新的教练重振雄风谈谈羽毛球李永波的自信和张军的务实,国羽需要新的教练重振雄风。北京时间12月19日,随着2021羽毛球世锦赛的结束。国羽在2021年的征程也全部结束。国羽在2021年的表……
山东科协每日科普今年的中秋夜能观赏到超级月亮吗?天文预报显示,今年中秋夜的月亮是十五的月亮十五圆,那么,今晚能观赏到超级月亮吗?我们知道,月球按照椭圆形轨道绕地球运行,与地球的距离具有周期性的变化,离地球最近的点称为近……人太闲,是一场灾难!太闲,则别念窃生;太忙,则真性不显。古语有云:少年经不得顺境,中年经不得闲境,老年经不得逆境。人,不能过得太闲。尤其是对于中年人来说,无论是生理还是心理,忙碌……多重模式,随身易携洁齿Poby便携式冲牙器体验前言:说起牙齿的健康问题,也许脑海里马上会跳出一句牙疼不是病,疼起来真要命,这就是很大程度与口腔、牙齿清洁有关系,绝大多数人的洁齿习惯是早晚两次刷牙,连餐后漱口的习惯也省……积分榜日本队30收官7月27日晚,男足东亚杯最后一轮,谁能想到韩国队对阵日本队,竟然如此被动!其实日本队的强悍,的确是所有球队所感到可怕的。尽管上半场多出很多次射门,但是都未果。下半场仅4分钟,小……格局!美国女篮核心盛赞韩旭她这三年的变化很大,仍然还在进步女篮世界杯决赛,卫冕冠军美国女篮将迎战中国女篮。赛前,美国女篮的主力大前锋阿莉莎托马斯接受了媒体的采访,在谈到韩旭时,她给出了非常高的评价。阿莉莎托马斯(左)现年3……从广东韶关走出的五位明星,珠江台的两任综艺一姐都是韶关人一,张颂文在过去,出道近二十年的张颂文在国内影视圈一直都表现得默默无闻,虽然他的演技一如既往那么稳定,可惜他从来没有获得过足够的表现机会,直到2023年,随着电视剧《狂飙……朱芳雨,入主中国篮协?换届,姚明或力不从心。球迷众望所归本月底,中国篮协即将举行第十届全国代表大会,选出新一届领导班子,继续推进中国篮球事业高质量发展。届时,姚明为主席领衔的现任中国篮协领导班子必将重新洗牌,更新换代,为冲刺下一个奥……华为偷偷上架新机,12GB1TB加持,可能是麒麟9000的绝去年对于整个Android阵营来说,都是一个灾难,因为我们都知道,在Android阵营中,绝大多数的手机厂商都要依靠高通公司提供的芯片,而去年的高通骁龙888处理器芯片,因为采……睡到半夜,容易口干舌燥是咋回事?或与这几点有关,莫大意睡眠是每个人每天必须完成的一项生理活动,人的一生约有13的时间都是在睡眠中度过的,睡眠是生命的需要,人不能没有睡眠,睡眠质量对一个人的健康而言起到至关重要的作用,长期缺觉严重影……世界杯球员身价榜佩德里9千万,2人破亿,无德国人,姆巴佩登顶前言4年一届的世界杯即将在今年年底的卡塔尔打响,全世界球迷的目光都聚焦在了卡塔尔。世界足坛的每一位球员都无比向往世界杯的舞台,所有球员都希望通过这个平台能够展现出自……第11枚意义非凡!杜锋首战全程戴着大大的冠军戒指闪耀全场随着上个赛季击败辽宁队完成连冠,杜锋已经在球员和教练阶段跟随球队拿下第11次冠军,这也是广东队队史全部冠军,换言之,说杜锋是广东队的福星,一点都不为过。北京时间10月16……2022年的阿树(东加豆)头条创作挑战赛微微微故事:2022年的阿树(东加豆)他叫阿树。2022年阿树计划了很多,可是他只跟随着2021年。2021年做过什么,2022年都一样。……
友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找