扣丁学堂Java培训之Bloom Filter(布隆过滤器)如何解决缓存穿透

2019-03-22 19:24:15 718浏览

今天扣丁学堂Java培训老师给大家介绍一下关于BloomFilter(布隆过滤器)如何解决缓存穿透的详细介绍,下面我们详细介绍一下吧。




缓存穿透是什么?

关于缓存穿透,简单来说就是系统处理了大量不存在的数据查询。正常的使用缓存流程大致是,数据查询先进行缓存查询,如果key不存在或者key已经过期,再对数据库进行查询,并把查询到的对象,放进缓存。如果数据库查询对象为空,则不放进缓存。现在系统接收了大量不存在的key,缓存层形同虚设,大量请求引向数据库,数据库承受不了压力,宕机。

布隆过滤器是什么?

BloomFilter适用于判断数据是否在一个集合中。

BloomFilter的基本原理是位数组与Hash函数的联合使用。

首先,BloomFilter是一个包含了m位的位数组,数组的每一位都初始化为;其次,定义k个不同的Hash函数,每个函数都可以将集合中的元素映射到位数组的某一位。

当向集合中插入元素时,根据K个Hash函数可以得到位数组中的k个位,如果有的位为0,则元素肯定不在集合中,如果全部为1,则元素可能在集合中,因为在插入其它元素时,可能会将这些位置设为1。

所以,使用BloomFilter法的难点是如何根据输入元素个数n,来确定位数组m的大小以及Hash函数。

BloomFilter的优点是具有很好的空间效率和时间效率。它的插入和查询时间都是常数,另外,它不保存元素本身,具有良好的安全性。然而,这些优点都是以牺牲正确率为代价的。当插入的元素越多,错判的概率越大。另外,BloomFilter只能插入元素,不能删除元素,原因是多个元素可能共用了位数组中的同一个位。

以上就是关于扣丁学堂Java培训之Bloom Filter(布隆过滤器)如何解决缓存穿透的全部介绍,想要了解更多关于Java开发方面内容的小伙伴,请关注扣丁学堂Java培训官网、微信等平台,扣丁学堂IT职业在线学习教育平台为您提供权威的Java开发环境搭建视频,Java培训后的前景无限,行业薪资和未来的发展会越来越好的,扣丁学堂老师精心推出的Java视频教程定能让你快速掌握Java从入门到精通开发实战技能。扣丁学堂Java技术交流群:670348138。


扣丁学堂微信公众号                                 HTML5前端开发VIP免费公开课

     【关注微信公众号获取更多学习资料】           【扫码进入HTML5前端开发VIP免费公开课



查看更多关于“Java开发资讯”的相关文章>>


标签: Java培训 Java视频教程 Java多线程 Java面试题 Java学习视频 Java开发

热门专区

暂无热门资讯

课程推荐

微信
微博
15311698296

全国免费咨询热线

邮箱:codingke@1000phone.com

官方群:148715490

北京千锋互联科技有限公司版权所有   北京市海淀区宝盛北里西区28号中关村智诚科创大厦4层
京ICP备12003911号-6   Copyright © 2013 - 2019

京公网安备 11010802030908号