游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

优秀的基数统计算法HyperLogLog

  为什么要使用HyperLogLog?
  在我们实际开发的过程中,可能会遇到这样一个问题,当我们需要统计一个大型网站的独立访问次数时,该用什么的类型来统计?
  如果我们使用Redis中的集合来统计,当它每天有数千万级别的访问时,将会是一个巨大的问题。因为这些访问量不能被清空,我们运营人员可能会随时查看这些信息,那么随着时间的推移,这些统计数据所占用的空间会越来越大,逐渐超出我们能承载最大空间。
  例如,我们用IP来作为独立访问的判断依据,那么我们就要把每个独立IP进行存储,以IP4来计算,IP4最多需要15个字节来存储信息,例如:110。110。110。110。当有一千万个独立IP时,所占用的空间就是15bit10000000约定于143MB,但这只是一个页面的统计信息,假如我们有1万个这样的页面,那我们就需要1T以上的空间来存储这些数据,而且随着IP6的普及,这个存储数字会越来越大,那我们就不能用集合的方式来存储了,这个时候我们需要开发新的数据类型HyperLogLog来做这件事了。HyperLogLog介绍
  HyperLogLog(下文简称为HLL)是Redis2。8。9版本添加的数据结构,它用于高性能的基数(去重)统计功能,它的缺点就是存在极低的误差率。
  HLL具有以下几个特点:能够使用极少的内存来统计巨量的数据,它只需要12K空间就能统计264的数据;统计存在一定的误差,误差率整体较低,标准误差为0。81;误差可以被设置辅助计算因子进行降低。基础使用
  HLL的命令只有3个,但都非常的实用,下面分别来看。添加元素127。0。0。1:6379pfaddkeyredis(integer)1127。0。0。1:6379pfaddkeyjavasql(integer)1
  相关语法:pfaddkeyelement〔element。。。〕
  此命令支持添加一个或多个元素至HLL结构中。统计不重复的元素127。0。0。1:6379pfaddkeyredis(integer)1127。0。0。1:6379pfaddkeysql(integer)1127。0。0。1:6379pfaddkeyredis(integer)0127。0。0。1:6379pfcountkey(integer)2
  从pfcount的结果可以看出,在HLL结构中键值为key的元素,有2个不重复的值:redis和sql,可以看出结果还是挺准的。
  相关语法:pfcountkey〔key。。。〕
  此命令支持统计一个或多个HLL结构。合并一个或多个HLL至新结构
  新增k和k2合并至新结构k3中,代码如下:127。0。0。1:6379pfaddkjavasql(integer)1127。0。0。1:6379pfaddk2redissql(integer)1127。0。0。1:6379pfmergek3kk2OK127。0。0。1:6379pfcountk3(integer)3
  相关语法:pfmergedestkeysourcekey〔sourcekey。。。〕
  pfmerge使用场景
  当我们需要合并两个或多个同类页面的访问数据时,我们可以使用pfmerge来操作。代码实战
  接下来我们使用Java代码来实现HLL的三个基础功能,代码如下:importredis。clients。jedis。Jedis;publicclassHyperLogLogExample{publicstaticvoidmain(String〔〕args){JedisjedisnewJedis(127。0。0。1,6379);添加元素jedis。pfadd(k,redis,sql);jedis。pfadd(k,redis);统计元素longcountjedis。pfcount(k);打印统计元素System。out。println(k:count);合并HLLjedis。pfmerge(k2,k);打印新HLLSystem。out。println(k2:jedis。pfcount(k2));}}
  以上代码执行结果如下:k:2k2:2HLL算法原理
  HyperLogLog算法来源于论文HyperLogLogtheanalysisofanearoptimalcardinalityestimationalgorithm,想要了解HLL的原理,先要从伯努利试验说起,伯努利实验说的是抛硬币的事。一次伯努利实验相当于抛硬币,不管抛多少次只要出现一个正面,就称为一次伯努利实验。
  我们用k来表示每次抛硬币的次数,n表示第几次抛的硬币,用kmax来表示抛硬币的最高次数,最终根据估算发现n和kmax存在的关系是n2(kmax),但同时我们也发现了另一个问题当试验次数很小的时候,这种估算方法的误差会很大,例如我们进行以下3次实验:第1次试验:抛3次出现正面,此时k3,n1;第2次试验:抛2次出现正面,此时k2,n2;第3次试验:抛6次出现正面,此时k6,n3。
  对于这三组实验来说,kmax6,n3,但放入估算公式明显326。为了解决这个问题HLL引入了分桶算法和调和平均数来使这个算法更接近真实情况。
  分桶算法是指把原来的数据平均分为m份,在每段中求平均数在乘以m,以此来消减因偶然性带来的误差,提高预估的准确性,简单来说就是把一份数据分为多份,把一轮计算,分为多轮计算。
  而调和平均数指的是使用平均数的优化算法,而非直接使用平均数。
  例如小明的月工资是1000元,而小王的月工资是100000元,如果直接取平均数,那小明的平均工资就变成了(1000100000)250500元,这显然是不准确的,而使用调和平均数算法计算的结果是2(110001100000)1998元,显然此算法更符合实际平均数。
  所以综合以上情况,在Redis中使用HLL插入数据,相当于把存储的值经过hash之后,再将hash值转换为二进制,存入到不同的桶中,这样就可以用很小的空间存储很多的数据,统计时再去相应的位置进行对比很快就能得出结论,这就是HLL算法的基本原理,想要更深入的了解算法及其推理过程,可以看去原版的论文,链接地址在文末。小结
  当需要做大量数据统计时,普通的集合类型已经不能满足我们的需求了,这个时候我们可以借助Redis2。8。9中提供的HyperLogLog来统计,它的优点是只需要使用12k的空间就能统计264的数据,但它的缺点是存在0。81的误差,HyperLogLog提供了三个操作方法pfadd添加元素、pfcount统计元素和pfmerge合并元素。参考文献论文HyperLogLog:theanalysisofanearoptimalcardinalityestimationalgorithm

联发科发布两款中端5G主控,均为6nm制程打造继去年11月联发科方面推出首款采用台积电6nm制程,面向平板电脑市场的MT8195MT8192后,后续包括天玑11001200、迅鲲1300T等主控也均基于这一制程打造。日前,……微信右上角号,暗藏着4个功能,太好用了微信是每天都在使用的软件,它的功能全面又丰富,除了常用的功能,其实还有很多隐藏功能我们没有发现,最近小编发现微信右上角的号,也有很多玄机,太好用了!1。群聊检测好友……快递送上门是奢求吗?如何解决这个大难题?虽说现在快递员都直接对接快递驿站,方便了不少用户,但仍然还有一些用户对于快递送上门存在执念。现在快递都被送到快递驿站代收,让用户感到不满。前阵子行业内某一快递代收平台开始试点自……飞猪又现大数据杀熟价格最大差值达到35元?大数据杀熟,一场技术作恶的狂欢,如今仍在互联网的隐秘角落不断上演。2021年3月24日,一名匿名用户在黑猫投诉飞猪APP大数据杀熟。他是飞猪F3会员,他的同类房型价格比朋……如何看待QQ新产品坦白说?大数据收集隐私的新思路。你自己不愿说?我让你好友统统告诉我。细思极恐,想注销QQ。至于这个功能对隐私的侵犯到底有没有那么严重的问题,腾讯这是开了个坏头。罗马不是一天建成的……联想不是在柳传志的带领下成为世界一流公司的吗?世界一流的买办企业。联想的背后有中科院,有政府采购,有银行贷款,有8万平米土地,有倪院士研发的联想汉卡,还有一帮科技人员,怎么能说是柳传志一个人的带领下呢,最后还有科学院……银行推进人工智能技术应用时需同步考量可信AI的评估与验证易观数字化:今年以来,政府层面、金融监管层面在科技伦理治理的指导要求上持续加码,《中共中央办公厅国务院办公厅印发关于加强科技伦理治理的意见》中,点明人工智能作为重点领域应完善科……新能源汽车冬季低温充电会很慢是为什么室外温度太低,导致电池温度太低时,没有电池加温技术的电动汽车甚至会充不了电,因此最好是车辆一停下来立即充电。充电过程中,电池温度也会上升,上升到合适温度时,充电效率(电流)会恢……新纳米机器人进入活癌细胞内,或许可以取代化疗放疗免疫疗法伴随着人民生活水平的提高、医疗技术的进步,现如今,已经有大多数疾病受到控制,但还有一部分疾病到如今,人们还是束手无策,而这其中也包括癌症。3月15日,新华社传来了一个在这……红旗Linux桌面系统V11社区预览版(0521)发布IT之家5月22日消息红旗Linux11是一款以全面优化、广泛兼容、稳定可靠、智能交互为产品最终定位的桌面操作系统发行版,在后续的正式商业版本中将逐步推出包括红旗浏览器、红旗应……魅族手表天青色曝光34次打磨支持通话,5月31日发布IT之家5月21日消息魅族首款智能手表将于5月31日正式发布,近日官方发布海报,公布了这款手表的外观以及天青色款。官方表示,这款手表经过34次探索和打磨,外壳圆润细腻。从……联想问题,你怎么看?这个问题我可以这么回答你。你是中国人还是美国人联想的主要毛病是发生在下半程,脱壳改制当时都受政策鼓励的,我们不能切割历史来看,关键是发展起来后,一味图利而忘记做为中国企业……
想下载魔兽世界,结果发现六十多g,请问为啥这么大,这不是一个你好,我来回答您的问题。魔兽世界作为一款老牌网游,已经15年了。从60级年代到120级年代,经历了数个版本更替和资料更新,内容也从最初的3G到达现在的65G。2020年,最新9……助听器是不是都有滋滋的声音,为什么?我们生活在一个充满噪音的世界里,只不过是一些环境噪音大;一些环境噪音小;而且就是最好的助听器,也会产生本机噪音,所以没有噪声的助听器是不存在的。关键是好的助听器验配师能让助听器……有的企业活不下去,不是因为特斯拉降价,而是因为自己太弱日前,有媒体援引360创始人周鸿祎在谈到特斯拉ModelY降价时表示:特斯拉有点像鲶鱼,把这块搅和,有的人可能活不下去,能活下来的人,跟高手同场竞技之后,水平就会提升。7……STM32F103USART串口实验代码includestm32f10x。hvoidMyUSART1Init(void){定义结构体GPIOInitTypeDefGPIOInitStruct;USARTInitTyp……你认为小米最失败的是哪款手机?是小米MIX4吗?文小伊评科技小米MIX4最失败?当然不是。虽然MIX4的降价幅度比较大,从初上市的4999元一路雪崩到了3000来块钱左右,但是说他是最失败的产品肯定是不对的,因为……高像素方向对了,小米或首发2亿像素相机,小米12Ultra又屏幕,相机,快充是手机这几年发展最快的配置。屏幕方面的领导者是三星,毕竟自己有得天独厚的优势,任何好东西基本上都是三星自己率先使用,其他厂商只能排队。至于快充和相机,三星并没有……温州特斯拉事故官方调查结果公布司机确实是错把油门当刹车IT之家5月23日消息温州市汽车工程学会发布了此前特斯拉事故的最新调查报告,中美双方数据均证实去年8月温州特斯拉连环撞车事故真相系车主误踩踏板,把油门踏板当刹车踩。值得一……摄影欣赏丨大疆MavicAir无人机实拍样张欣赏2018年1月底,大疆发布御MavicAir无人机。其中,MavicAir相机采用12。3英寸1200万像素CMOS传感器。至于其拍照性能如何呢,下面让我们通过DPReview……Log4Shell更新第二个log4j漏洞已发布lunase在log4j维护者发布2。15。0解决Log4Shell漏洞的版本后,在CVE202145046中发现并报告了一个额外的攻击漏洞,继续建议您升级到2。16。0,以防发现更进一步……宇宙的奥秘光亮点波纹我们空气中不为人知的现象,光亮点和波纹的存在,最让人不可思议的是,我们竟然能用肉眼看到这种微观事物!这种现象颠覆我们的认知!我三十年前就观察一个现象,我们空中有无数的光亮……关于京东APP申请补偿京豆的一些事情不知道大家最近有没有感受到最近京东APP一个问题,就是申请的补偿迟迟不到位。这里和大家讲讲原因。一般的,我们的商品超期物流派送,京东从今天的618左右提出了可以赔付,我们……天地科技拟分拆天玛智控至科创板上市北京商报讯(记者马换换)3月24日晚间,天地科技(600582)披露公告称,公司拟分拆所属子公司北京天玛智控科技股份有限公司(天玛智控)至上交所科创板上市。天地科技表示,……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网