面试官:大量请求 Redis 不存在的数据,从而打倒数据库,你有什么方案?

编程入门 行业动态 更新时间:2024-10-07 12:22:29

面试官:大量请求 Redis <a href=https://www.elefans.com/category/jswz/34/1770716.html style=不存在的数据,从而打倒数据库,你有什么方案?"/>

面试官:大量请求 Redis 不存在的数据,从而打倒数据库,你有什么方案?

若有收获,请记得分享和转发哦

大家都知道,在计算机中,IO一直是一个瓶颈,很多框架以及技术甚至硬件都是为了降低IO操作而生,今天聊一聊过滤器,先说一个场景:

我们业务后端涉及数据库,当请求消息查询某些信息时,可能先检查缓存中是否有相关信息,有的话返回,如果没有的话可能就要去数据库里面查询,这时候有一个问题,如果很多请求是在请求数据库根本不存在的数据,那么数据库就要频繁响应这种不必要的IO查询,如果再多一些,数据库大多数IO都在响应这种毫无意义的请求操作。

那么如何将这些请求阻挡在外呢?过滤器由此诞生!

布隆过滤器

布隆过滤器(Bloom Filter)大概的思路就是,当你请求的信息来的时候,先检查一下你查询的数据我这有没有,有的话将请求压给数据库,没有的话直接返回,是如何做到的呢?

如图,一个bitmap用于记录,bitmap原始数值全都是0,当一个数据存进来的时候,用三个Hash函数分别计算三次Hash值,并且将bitmap对应的位置设置为1。

上图中,bitmap 的1,3,6位置被标记为1,这时候如果一个数据请求过来,依然用之前的三个Hash函数计算Hash值,如果是同一个数据的话,势必依旧是映射到1,3,6位,那么就可以判断这个数据之前存储过,如果新的数据映射的三个位置,有一个匹配不上,假如映射到1,3,7位,由于7位是0,也就是这个数据之前并没有加入进数据库,所以直接返回。

更多推荐

面试官:大量请求 Redis 不存在的数据,从而打倒数据库,你有什么方案?

本文发布于:2024-02-27 21:46:20,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1766356.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:不存在   你有什么   面试官   数据库   方案

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!