2022年6月6日记:Linux服务器开发,Mark老师,海量数据去重的Hash与BloomFilter,bitmap

推荐一个 零声学院 免费公开课程,个人觉得老师讲得不错,分享给大家:[Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习]
后台服务器:https://course.0voice.com/v1/course/intro?courseId=5&agentId=0
────────────────────────────────────
在这里插入图片描述
从海量数据中查询某个字符串是否存在?
脑子中应该构件知识网络,哪里用到二分查找。
在这里插入图片描述
平衡二叉树有两点需要注意:

  • 存的是具体的元素
  • 比较字符串
    负载因子的概念:描述hash函数冲突程度的参数,形容散列表的存储密度。stl的map是0.6,redis是1。负载因子越小,冲突越小;负载因子越大,冲突也就越大。

冲突处理:

  • 链表法:
    在这里插入图片描述
    使用头插法的原因是默认刚刚插入的元素也会优先访问,数据库,memchd都选用头插法。
  • 开放寻址法
    数组中只放一个元素,先判断槽位中是否有元素,
    在这里插入图片描述
    平衡二叉树和hash的缺点是都要存储具体的元素,所以对于海量数据就非常的棘手。布隆过滤器能够不比较字符串,不存储具体的元素。
    很多开源框架都运用了下面这种取余的方式进行优化。
    在这里插入图片描述
    在这里插入图片描述
    str1经过三次hash后,将槽位置1,但是1是不能知道是str1还是str2所为。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    先确定能不能使用布隆过滤器,然后使用布隆过滤器要预估存储多少元素,再算具体的key。

重点

布隆过滤器如何解决缓存穿透?

  • 减轻数据库压力,在server端与mysql间加入缓存来存储热点数据
  • 描述缓存穿透,server端请求数据时,缓存和redis都不包含热点数据,最后全部涌入mysql
  • 黑客利用漏洞伪造数据攻击或者内部业务bug造成大量重复请求不存在的数据。
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

屯门山鸡叫我小鸡

加油

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

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

打赏作者

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

抵扣说明:

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

余额充值