计数、计数读取方法及装置制造方法及图纸

技术编号:38507328 阅读:16 留言:0更新日期:2023-08-19 16:53
本公开关于一种计数、计数读取方法及装置。计数方法包括:响应于满足更新计数相关业务的计数键的计数值的条件,确定所述计数键的计数数据是否存在于内存计数器中,其中,所述计数键是预定长度的字符串;在所述计数键的计数数据不存在于所述内存计数器中的情况下,更新所述计数键的计数数据在预设布隆过滤器中的计数值,所述预设布隆过滤器是支持计数的布隆过滤器。计数读取方法包括:响应于接收到读取计数键的计数值的请求,读取内存计数器;在从所述内存计数器没有读取到所述计数键的计数数据的情况下,从预设布隆过滤器读取所述计数键的计数数据中的计数值。根据本公开的计数、计数读取方法及装置,可降低计数所需要的存储空间,提高计数性能。提高计数性能。提高计数性能。

【技术实现步骤摘要】
计数、计数读取方法及装置


[0001]本公开涉及计算机
更具体地,本公开涉及一种计数、计数读取方法及装置。

技术介绍

[0002]相关技术中,互联网开发中使用的计数器一般使用远程字典服务(Remote Dictionary Server,简称redis)或者关系型数据库管理系统(mysql)等数据库进行计数,海量数据导致了高昂的存储成本。基于数据库的计数器将计数存储在mysql或者redis中,每次操作数据库进行计数的增减,每一个计数key对应一条独立的数据库记录。数据库往往使用较为复杂的数据结构、安全机制和持久化机制,即使是内存型数据库的写入能力也存在很大的瓶颈,无法完全应付极端情况下的写入要求。而计数相关业务本身的特点决定了存在大量的长尾计数键(key),海量数据对存储空间的要求极高,也导致了高昂的存储成本。这些长尾key可能会占据了总存储资源的90%以上,但是很少机会被使用,这浪费了大量的存储资源,且随着业务的发展这部分历史数据的处理会成为一个棘手的问题。此外,很多业务场景下不太需要完全精确的计数能力(如点赞数等),而hyperloglog(其中,HyperLogLog是Redis的高级数据结构)等算法主要用于解决基数计数问题,无法用于普通计数的业务场景。

技术实现思路

[0003]本公开的示例性实施例在于提供一种计数、计数读取方法及装置,以至少解决相关技术中的性能受限、需要耗费大量的存储资源的问题。
[0004]根据本公开的示例性实施例,提供一种计数方法,包括:响应于满足更新计数相关业务的计数键的计数值的条件,确定所述计数相关业务的计数键的计数数据是否存在于内存计数器中,其中,所述计数相关业务的计数键是预定长度的字符串;在所述计数相关业务的计数键的计数数据不存在于所述内存计数器中的情况下,更新所述计数相关业务的计数键的计数数据在预设布隆过滤器中的计数值,其中,所述预设布隆过滤器是支持计数的布隆过滤器。
[0005]可选地,所述计数方法还可包括:响应于所述计数相关业务的计数键在所述预设布隆过滤器中的计数值达到阈值,将所述计数相关业务的计数键的计数数据转移到所述内存计数器中。
[0006]可选地,所述计数方法还可包括:在所述计数相关业务的计数键的计数数据存在于所述内存计数器中的情况下,更新所述计数相关业务的计数键的计数数据在所述内存计数器中的计数值。
[0007]可选地,所述更新计数相关业务的计数键的计数值的条件可包括接收到更新计数相关业务的计数键的计数值的请求、检测到计数相关业务的的计数变化中的至少一个。
[0008]可选地,所述更新计数相关业务的计数键的计数值的请求可包括增大计数相关业
务的计数键的计数值的请求或者减小计数相关业务的计数键的计数值的请求。
[0009]可选地,所述预设布隆过滤器可包括频谱布隆过滤器和/或计数布隆过滤器。
[0010]根据本公开的示例性实施例,提供一种计数读取方法,包括:响应于接收到读取计数相关业务的计数键的计数值的请求,读取内存计数器,其中,所述计数相关业务的计数键是预定长度的字符串;在从所述内存计数器没有读取到所述计数相关业务的计数键的计数数据的情况下,从预设布隆过滤器读取所述计数相关业务的计数键的计数数据中的计数值,其中,所述预设布隆过滤器是支持计数的布隆过滤器。
[0011]可选地,所述计数读取方法还可包括:在从所述内存计数器读取到所述计数相关业务的计数键的计数数据的情况下,从所述内存计数器读取所述计数相关业务的计数键的计数数据中的计数值。
[0012]根据本公开的示例性实施例,提供一种计数装置,包括:判断单元,被配置为响应于满足更新计数相关业务的计数键的计数值的条件,确定所述计数相关业务的计数键的计数数据是否存在于内存计数器中,其中,所述计数相关业务的计数键是预定长度的字符串;和第一更新单元,被配置为在所述计数相关业务的计数键的计数数据不存在于所述内存计数器中的情况下,更新所述计数相关业务的计数键的计数数据在预设布隆过滤器中的计数值,其中,所述预设布隆过滤器是支持计数的布隆过滤器。
[0013]可选地,所述计数装置还可包括:计数转移单元,被配置为响应于所述计数相关业务的计数键在所述预设布隆过滤器中的计数值达到阈值,将所述计数相关业务的计数键的计数数据转移到所述内存计数器中。
[0014]可选地,所述计数装置还可包括:第二更新单元,被配置为在所述计数相关业务的计数键的计数数据存在于所述内存计数器中的情况下,更新所述计数相关业务的计数键的计数数据在所述内存计数器中的计数值。
[0015]可选地,所述更新计数相关业务的计数键的计数值的条件可包括接收到更新计数相关业务的计数键的计数值的请求、检测到计数相关业务的的计数变化中的至少一个。
[0016]可选地,所述更新计数相关业务的计数键的计数值的请求可包括增大计数相关业务的计数键的计数值的请求或者减小计数相关业务的计数键的计数值的请求。
[0017]可选地,所述预设布隆过滤器可包括频谱布隆过滤器和/或计数布隆过滤器。
[0018]根据本公开的示例性实施例,提供一种计数读取装置,包括:第一读取单元,被配置为响应于接收到读取计数相关业务的计数键的计数值的请求,读取内存计数器,其中,所述计数相关业务的计数键是预定长度的字符串;和第二读取单元,被配置为在从所述内存计数器没有读取到所述计数相关业务的计数键的计数数据的情况下,从预设布隆过滤器读取所述计数相关业务的计数键的计数数据中的计数值,其中,所述预设布隆过滤器是支持计数的布隆过滤器。
[0019]可选地,所述计数读取装置还可包括:第三读取单元,被配置为在从所述内存计数器读取到所述计数相关业务的计数键的计数数据的情况下,从所述内存计数器读取所述计数相关业务的计数键的计数数据中的计数值。
[0020]根据本公开的示例性实施例,提供一种电子设备,包括:处理器;用于存储所述处理器可执行指令的存储器;其中,所述处理器被配置为执行所述指令,以实现根据本公开的示例性实施例的方法。
[0021]根据本公开的示例性实施例,提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序被电子设备的处理器执行时,使得电子设备执行根据本公开的示例性实施例的方法。
[0022]根据本公开的示例性实施例,提供一种计算机程序产品,包括计算机程序/指令,当所述计算机程序/指令被处理器执行时,实现根据本公开的示例性实施例的方法。
[0023]本公开的实施例提供的技术方案至少带来以下有益效果:
[0024]通过使用预设布隆过滤器进行长尾计数键计数,将模糊技术原理引入互联网长尾计数问题的处理中,从而获得传统方式不可能达到的空间压缩率,节省了大量的存储空间,极大的降低了业务的运行成本;
[0025]通过混合的存储结构,解决了预设布隆过滤器(例如,SBF/CBF)无法存储大计数的问题,有效地拓展了这种模糊技术能力在实际场景中的应用范围,大幅提升了这种技本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种计数方法,其特征在于,包括:响应于满足更新计数相关业务的计数键的计数值的条件,确定所述计数相关业务的计数键的计数数据是否存在于内存计数器中,其中,所述计数相关业务的计数键是预定长度的字符串;在所述计数相关业务的计数键的计数数据不存在于所述内存计数器中的情况下,更新所述计数相关业务的计数键的计数数据在预设布隆过滤器中的计数值,其中,所述预设布隆过滤器是支持计数的布隆过滤器。2.根据权利要求1所述的计数方法,其特征在于,还包括:响应于所述计数相关业务的计数键在所述预设布隆过滤器中的计数值达到阈值,将所述计数相关业务的计数键的计数数据转移到所述内存计数器中。3.根据权利要求1所述的计数方法,其特征在于,还包括:在所述计数相关业务的计数键的计数数据存在于所述内存计数器中的情况下,更新所述计数相关业务的计数键的计数数据在所述内存计数器中的计数值。4.根据权利要求1所述的计数方法,其特征在于,所述更新计数相关业务的计数键的计数值的条件包括接收到更新计数相关业务的计数键的计数值的请求、检测到计数相关业务的计数变化中的至少一个。5.根据权利要求4所述的计数方法,其特征在于,所述更新计数相关业务的计数键的计数值的请求包括增大计数相关业务的计数键的计数值的请求或者减小计数相关业务的计数键的计数值的请求。6.根据权利要求5所述的计数方法,其特征在于,所述预设布隆过滤器包括频谱布隆过滤器和/或计数布隆过滤器。7.一种计数读取方法,其特征在于,还包括:响应于接收到读取计数相关业务的计数键的计数值的请求,读取内存计数器,其中,所述计数相关业务的计数键是预定长度的字符串;在从所述内存计数器没有读取到所述计数相关业务的计数键的计数数据的情况下,从预设布隆过...

【专利技术属性】
技术研发人员:陈曦
申请(专利权)人:北京达佳互联信息技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1