磁盘存储方法和装置、消息推送方法和装置及电子设备与流程

文档序号:15517321发布日期:2018-09-25 18:41阅读:111来源:国知局

本发明涉及数据存储技术领域,尤其涉及一种磁盘存储方法和装置、消息推送方法和装置及电子设备。



背景技术:

在数据存储技术领域,大多数存储引擎存储在文件中的内容都分为两部分:日志(log)和索引(logindex)。其中,log用于存储每条消息(record)的详细内容;logindex用于存储record的关键字(key)以及该record在log文件中的偏移量,有些还会存储record的其它相关内容。

如果存储引擎需要去重(在存储record时,去除重复的record),通常的方案是,直接通过logindex进行检索,其优势是可以做到针对整个log全局去重。

发明人在实现本发明的过程中,发现现有技术至少存在如下问题:在每次检索时,都需要读磁盘,运行速度很慢,性能差,不能适用于高并发场景



技术实现要素:

本发明实施例提供一种磁盘存储方法和装置、消息推送方法和装置及电子设备,以解决现有技术在高并发场景无法去重的缺陷,实现高效的海量消息去重存储。

为达到上述目的,本发明实施例提供了一种磁盘存储方法,包括:获取待存储消息的关键字;根据已存储消息的位图索引,采用布隆滤波器,对所述待存储消息和所述已存储消息进行基于所述关键字的判重操作,其中,所述已存储消息存储于磁盘中,所述已存储消息的位图索引存储于内存中;根据判重结果,对所述待存储消息进行处理。

本发明实施例还提供了一种磁盘存储方法,包括:获取待存储消息的关键字;在内存中,对所述待存储消息和已存储消息进行基于所述关键字的判重操作;根据判重结果,对所述待存储消息进行存储或丢弃处理。

本发明实施例还提供了一种消息推送方法,包括:获取待推送消息的关键字,所述关键字为所述待推送消息的目标用户id;根据已推送消息的位图索引,采用布隆过滤器,对所述待推送消息和所述已推送消息进行基于所述关键字的判重操作,其中,所述已推送消息存储于磁盘中,所述已推送消息的位图索引存储于内存中;根据判重结果,对所述待推送消息进行推送处理。

本发明实施例还提供了一种消息推送方法,包括:获取待推送消息的关键字,所述关键字为所述待推送消息的目标用户id;在内存中,对所述待推送消息和已推送消息进行基于所述关键字的判重操作;根据判重结果,对所述待推送消息进行推送处理。

本发明实施例还提供了一种磁盘存储装置,包括:第一获取模块,用于获取待存储消息的关键字;第一判重模块,用于根据已存储消息的位图索引,采用布隆滤波器,对所述待存储消息和所述已存储消息进行基于所述关键字的判重操作,其中,所述已存储消息存储于磁盘中,所述已存储消息的位图索引存储于内存中;第一处理模块,用于根据所述第一判重模块的判重结果,对所述待存储消息进行处理。

本发明实施例还提供了一种消息推送装置,包括:第二获取模块,用于获取待推送消息的关键字,所述关键字为所述待推送消息的目标用户id;第二判重模块,用于根据已推送消息的位图索引,采用布隆滤波器,对所述待推送消息和所述已推送消息进行基于所述关键字的判重操作,其中,所述已推送消息存储于磁盘中,所述已推送消息的位图索引存储于内存中;第二处理模块,用于根据所述第二判重模块的判重结果,对所述待推送消息进行推送处理。

本发明实施例还提供一种电子设备,包括:存储器,用于存储程序;处理器,用于运行所述存储器中存储的所述程序,以用于:获取待存储消息的关键字;根据已存储消息的位图索引,采用布隆滤波器,对所述待存储消息和所述已存储消息进行基于所述关键字的判重操作,其中,所述已存储消息存储于磁盘中,所述已存储消息的位图索引存储于内存中;根据判重结果,对所述待存储消息进行处理。

本发明实施例还提供一种电子设备,包括:存储器,用于存储程序;处理器,用于运行所述存储器中存储的所述程序,以用于:获取待推送消息的关键字,所述关键字为所述待推送消息的目标用户id;根据已推送消息的位图索引,采用布隆滤波器,对所述待推送消息和所述已推送消息进行基于所述关键字的判重操作,其中,所述已推送消息存储于磁盘中,所述已推送消息的位图索引存储于内存中;根据判重结果,对所述待推送消息进行推送处理。

本发明实施例提供的磁盘存储方法和装置、消息推送方法和装置及电子设备,通过布隆滤波器根据位图索引对消息进行判重,并根据判重结果进行去重或存储处理,在占用少量内存的情况下,即可完成对大量消息的检索,实现了高效的海量消息去重存储。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1为本发明实施例提供的业务系统的结构示意图;

图2为本发明提供的磁盘存储方法一个实施例的流程图;

图3为本发明提供的磁盘存储方法另一个实施例的流程图;

图4为本发明提供的磁盘存储方法又一个实施例的流程图;

图5a为本发明提供的消息推送方法一个实施例的场景示意图;

图5b为本发明提供的消息推送方法一个实施例的流程图;

图6为本发明提供的消息推送方法另一个实施例的流程图;

图7为本发明提供的磁盘存储装置一个实施例的结构示意图;

图8为本发明提供的磁盘存储装置另一个实施例的结构示意图;

图9为本发明提供的消息推送装置一个实施例的结构示意图图;

图10为本发明提供的电子设备一个实施例的结构示意图;

图11为本发明提供的电子设备另一个实施例的结构示意图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

针对现有技术无法在高并发场景下进行消息去重的缺陷,本申请提供一种解决方案,其主要原理是:在内存中对待存储消息和已存储消息进行基于关键字的判重操作,然后根据判重结果,对该待存储消息进行后续的存储或丢弃处理。在本方案中,大部分去重操作在内存中进行,只有当内存中无法确定时,才会继续进行磁盘检索,最后根据磁盘检索结果对重复的消息进行丢弃,而只存储不重复的消息。在内存中可以采用多组哈希(hash)函数对待存储消息进行去重操作。一种较佳的解决方案是,采用布隆滤波器进行判重操作。布隆滤波器基于消息的位图索引(bitmap)能够快速检索一个元素是否在一个集合中(即,待存储消息与已存储消息的关键字是否重复),而bitmap的特性是在占用少量内存的情况下,对大量消息进行检索,因此,能够实现高效的海量消息去重存储。

本发明实施例提供的方法可应用于任何具有高并发场景下海量数据存储能力的业务系统。图1为本发明实施例提供的业务系统的结构示意图,图1所示的结构仅仅是本发明的技术方案可以应用的业务系统的示例之一。如图1所示,业务系统中包括磁盘存储装置、内存和永久化存储数据的磁盘。业务系统通过外部调用服务来获取数据,外部调用服务可以是任何能够提供或者产生数据的服务,其主要来自于业务系统对其他系统或者客户端的业务访问或者服务调用,外部调用服务是新数据产生的主要来源。磁盘存储装置主要用来执行下述图2和图3所示的处理流程,其主要用于获取待存储消息的关键字,根据消息的位图索引,对待存储消息和已存储消息进行基于关键字的判重操作,并根据判重结果,对待存储消息进行去重或磁盘存储处理。采用布隆滤波器在占用少量内存的情况下,即可完成对大量消息的检索,因此能够实现高效的海量消息去重存储。

上述实施例是对本发明实施例的技术原理和示例性的应用框架的说明,下面通过多个实施例来进一步对本发明实施例具体技术方案进行详细描述。

实施例一

图2为本发明提供的磁盘存储方法一个实施例的流程图,该方法的执行主体可以为上述实施例所描述的业务系统。如图2所示,该磁盘存储方法包括如下步骤:

s201,获取待存储消息的关键字。

针对不同的应用场景,业务系统可以基于消息的某项或某几项特定属性来设置不同的关键字。当业务系统接收到待存储消息时,获取其提前设置好的关键字。

s202,根据已存储消息的位图索引,采用布隆滤波器,对待存储消息和已存储消息进行基于上述关键字的判重操作,其中,已存储消息存储于磁盘中,已存储消息的位图索引存储于内存中。

在本发明实施例中,假设获取到1个关键字,然后采用布隆滤波器(bloomfilter)进行判重操作。具体地,分别通过k个相互独立的随机映射函数(如,哈希函数),获取关键字的映射值,即,将关键字映射到{1,2,3,...,m}的范围中k个值,然后,在已存储消息的位图索引(bitmap)中查询这k个映射值所对应的位置的属性值(0或1),将k个属性值组成结果向量,如果结果向量中的每个元素的值都为1,则证明待存储消息和已存储消息中的关键字重复,否则,不重复。

本发明实施例中的位图索引为长度为m的二进制向量,业务系统在每一次存储消息时,都通过上述布隆滤波器的k个相互独立的哈希函数对其关键字进行映射。在该二进制向量中,对于任意元素x,第i个哈希函数映射的位置hi(x)就被置为1(1≤i≤k),如果一个位置多次被置1,则只有第一次起作用。因此,每存储一次消息,该位图索引需要更新一次。由于布隆过滤器存在误判,其误判率与哈希函数的个数k及位图索引的长度m有关。因此,k与m的值越大,也就是说,哈希函数的个数越多、位图索引的长度越长,本发明实施例进行判重的精确度越高。

s203,根据上述判重结果,对待存储消息进行处理。

在本发明实施例中,业务系统可以根据不同的判重结果进行不同的操作。例如,当待存储消息和已存储消息中的关键字重复时,丢弃该待存储消息结束操作;当待存储消息和已存储消息中的关键字不重复时,将其写入磁盘。

本发明实施例提供的磁盘存储方法,通过布隆滤波器根据位图索引对消息进行判重,并根据判重结果进行去重或存储处理,在占用少量内存的情况下,即可完成对大量消息的检索,实现了高效的海量消息去重存储。

实施例二

图3为本发明提供的磁盘存储方法另一个实施例的流程图。如图3所示,在上述实施例的基础上,本实施例提供的磁盘存储方法可以进一步包括以下步骤:

s301,获取待存储消息的关键字。

s302,采用布隆滤波器,对待存储消息和已存储消息进行基于上述关键字的判重操作。

s303,判断上述判重结果,若为重复,则执行步骤s304;若为不重复,则执行步骤s306。

在本发明实施例中,当判重结果为不重复(即,待存储消息和已存储消息中的关键字不重复)时,将待存储消息写入磁盘;当判重结果为重复时,由于布隆过滤器存在误判,此时存储消息和已存储消息中的关键字可能是不重复的,因此,业务系统可以根据已存储消息的磁盘索引,对待存储消息进行基于关键字的磁盘(logindex)检索,然后根据磁盘检索结果对待存储消息进行处理。

s304,根据已存储消息的磁盘索引,对待存储消息进行基于关键字的磁盘检索。

具体地,本发明实施例提供的业务系统,对待存储消息进行基于关键字的磁盘检索,即,去磁盘中查询具有该关键字的已存储消息是否存在。该步骤比较耗时,但是在实际应用场景中,消息重复往往比较少,因此走入该逻辑的情况也较少,大部分情况在步骤s302阶段即可被确定为“不重复”,从而直接进入写磁盘逻辑,以达到高效地判断是否重复。

s305,判断上述检索结果,若为重复,则结束操作;若为不重复,则执行步骤s306。

在本发明实施例中,当磁盘检索结果为不重复(即,待存储消息和已存储消息中的关键字不重复)时,将待存储消息写入磁盘;当磁盘检索结果为重复时,丢弃该待存储消息结束操作。

s306,将待存储消息写入磁盘。

另外,本发明实施例提供的业务系统,在将待存储消息写入磁盘的同时,还执行更新位图索引和磁盘索引的操作,以便对后续产生的消息进行判重和磁盘检索的操作。

本发明实施例提供的磁盘存储方法,首先通过布隆滤波器根据位图索引对消息进行预判重,在占用少量内存的情况下,即可完成对大量消息的检索,然后结合磁盘检索进行定判,进一步降低误判率,根据判重结果进行去重或存储处理,实现了高效的海量消息去重存储。

实施例三

图4为本发明提供的磁盘存储方法又一个实施例的流程图。如图4所示,该方法的执行主体可以为具有高并发场景下海量数据存储能力的业务系统,该磁盘存储方法可以包括如下步骤:

s401,获取待存储消息的关键字。

s402,在内存中,对待存储消息和已存储消息进行基于上述关键字的判重操作。

s403,判断上述判重结果,若为重复,则执行步骤s404;若为不重复,则执行步骤s406。

在本发明实施例中,当判重结果为不重复(即,待存储消息和已存储消息中的关键字不重复)时,将待存储消息写入磁盘;当判重结果为重复时,由于内存判重存在误判,此时存储消息和已存储消息中的关键字可能是不重复的,因此,业务系统可以根据已存储消息的磁盘索引,对待存储消息进行基于关键字的磁盘(logindex)检索,然后根据磁盘检索结果对待存储消息进行处理。

s404,根据已存储消息的磁盘索引,对待存储消息进行基于关键字的磁盘检索。

具体地,本发明实施例提供的业务系统,对待存储消息进行基于关键字的磁盘检索,即,去磁盘中查询具有该关键字的已存储消息是否存在。该步骤比较耗时,但是在实际应用场景中,消息重复往往比较少,因此走入该逻辑的情况也较少,大部分情况在步骤s402阶段即可被确定为“不重复”,从而直接进入写磁盘逻辑,以达到高效地判断是否重复。

s405,判断上述检索结果,若为重复,则结束操作;若为不重复,则执行步骤s406。

在本发明实施例中,当磁盘检索结果为不重复(即,待存储消息和已存储消息中的关键字不重复)时,将待存储消息写入磁盘;当磁盘检索结果为重复时,丢弃该待存储消息结束操作。

s406,将待存储消息写入磁盘。

另外,本发明实施例提供的业务系统,在将待存储消息写入磁盘的同时,还执行更新磁盘索引的操作,以便对后续产生的消息进行判重和磁盘检索的操作。

本发明实施例提供的磁盘存储方法,首先在内存中对消息进行预判重,在占用少量内存的情况下,即可完成对大量消息的检索,然后结合磁盘检索进行定判,进一步降低误判率,根据判重结果进行去重或存储处理,实现了高效的海量消息去重存储。

实施例四

图5a为本发明提供的消息推送方法一个实施例的场景示意图。图5b为本发明提供的消息推送方法一个实施例的流程图。本发明实施例具体应用于高并发场景下的海量消息去重推送,该方法的执行主体可以为具有高并发场景下海量数据存储及推送能力的业务系统。一个新闻产品在产生新的推送消息后,首先需要将消息写入磁盘中固定的位置,然后再向相关的目标用户统一推送。对于一个不断产生新的推送消息的新闻产品,考虑到用户体验,一般每天只允许给同一个用户发送一条推送。由于每天产生大量的新闻,每条新闻都对应有大量目标用户,而不同推送消息的目标用户之间可能会有重复。即,相对于同一个目标用户id,需要进行去重推送。如图5a和图5b所示,该消息推送方法包括如下步骤:

s501,获取待推送消息的关键字,该关键字为待推送消息的目标用户id(identity,标识)。

s502,采用布隆滤波器,对待推送消息和已推送消息进行基于上述关键字的判重操作。

在本发明实施例中,新闻产品产生待推送消息后,首先将其发送至业务系统,业务系统首先对其进行布隆滤波。根据已推送消息的位图索引,对待推送消息和已推送消息进行判重操作。也就是说,通过数个相互独立的随机映射函数,来获取目标用户id的映射值;并在已推送消息的位图索引中,查询与映射值对应的属性值;然后,根据各属性值来判断待推送消息与已推送消息是否重复。最后,根据判重结果对待推送消息进行推送处理。

s503,判断上述判重结果,若为重复,则执行步骤s504;若为不重复,则执行步骤s506。

在本发明实施例中,当待推送消息经过布隆滤波后的判重结果为不重复(即,待推送消息和已推送消息中的目标用户id不重复,业务系统未向该目标用户id推送消息)时,将待推送消息写入磁盘并通过网络推送至其目标用户id(如图5a中所示的用户1、用户2、用户3……或用户n);当布隆滤波后的判重结果为重复时,业务系统可以根据已推送消息的磁盘索引,对待推送消息进行基于关键字的磁盘检索,然后根据磁盘检索结果对待推送消息进行推送处理。

s504,根据已推送消息的磁盘索引,对待推送消息进行基于关键字的磁盘检索。

s505,判断上述检索结果,若为重复,则结束推送操作;若为不重复,则执行步骤s506。

在本发明实施例中,当磁盘检索结果为不重复(即,待推送消息和已推送消息中的目标用户id不重复,业务系统未向该目标用户id推送消息)时,将该待推送消息写入磁盘并推送至其目标用户id;当磁盘检索结果为重复时,丢弃该待推送消息结束推送操作。

s506,将待推送消息写入磁盘。

s507,将待推送消息推送至目标用户id。

另外,本发明实施例提供的业务系统,在将待推送消息写入磁盘的同时,还执行更新位图索引和磁盘索引的操作,以便对后续产生的消息进行判重和磁盘检索的操作。

本发明实施例提供的消息推送方法,首先通过布隆滤波器根据位图索引对消息进行预判重,在占用少量内存的情况下,即可完成对大量消息的检索,然后结合磁盘检索进行定判,进一步降低误判率,根据判重结果进行去重推送处理,实现了高效的海量消息去重推送。

实施例五

图6为本发明提供的消息推送方法另一个实施例的流程图。该方法的执行主体可以为具有高并发场景下海量数据存储及推送能力的业务系统。如图6所示,该消息推送方法包括如下步骤:

s601,获取待推送消息的关键字,该关键字为待推送消息的目标用户id。

s602,在内存中,对待推送消息和已推送消息进行基于上述关键字的判重操作。

在本发明实施例中,新闻产品产生待推送消息后,首先将其发送至业务系统,业务系统首先对其进行内存判重操作,然后,根据判重结果对待推送消息进行推送处理。

s603,判断上述判重结果,若为重复,则执行步骤s604;若为不重复,则执行步骤s606。

在本发明实施例中,当待推送消息在内存中经过判重结果为不重复(即,待推送消息和已推送消息中的目标用户id不重复,业务系统未向该目标用户id推送消息)时,将待推送消息写入磁盘并通过网络推送至其目标用户id;当判重结果为重复时,业务系统可以根据已推送消息的磁盘索引,对待推送消息进行基于关键字的磁盘检索,然后根据磁盘检索结果对待推送消息进行推送处理。

s604,根据已推送消息的磁盘索引,对待推送消息进行基于关键字的磁盘检索。

s605,判断上述检索结果,若为重复,则结束推送操作;若为不重复,则执行步骤s606。

在本发明实施例中,当磁盘检索结果为不重复(即,待推送消息和已推送消息中的目标用户id不重复,业务系统未向该目标用户id推送消息)时,将该待推送消息写入磁盘并推送至其目标用户id;当磁盘检索结果为重复时,丢弃该待推送消息结束推送操作。

s606,将待推送消息写入磁盘。

s607,将待推送消息推送至目标用户id。

另外,本发明实施例提供的业务系统,在将待推送消息写入磁盘的同时,还执行更新磁盘索引的操作,以便对后续产生的消息进行判重和磁盘检索的操作。

本发明实施例提供的消息推送方法,首先在内存中对消息进行预判重,在占用少量内存的情况下,即可完成对大量消息的检索,然后结合磁盘检索进行定判,进一步降低误判率,根据判重结果进行去重推送处理,实现了高效的海量消息去重推送。

实施例六

图7为本发明提供的磁盘存储装置一个实施例的结构示意图,可用于执行如图2所示的方法步骤。如图7所示,该装置可以包括:第一获取模块71、第一判重模块72和第一处理模块73。

其中,第一获取模块71用于获取待存储消息的关键字;第一判重模块72用于根据已存储消息的位图索引,采用布隆滤波器,对待存储消息和已存储消息进行基于关键字的判重操作,其中,已存储消息存储于磁盘中,已存储消息的位图索引存储于内存中;第一处理模块73用于根据第一判重模块72的判重结果,对待存储消息进行处理。

在本发明实施例中,针对不同的应用场景,业务系统可以基于消息的某项或某几项特定属性来设置不同的关键字。当业务系统接收到待存储消息时,第一获取模块71获取其提前设置好的关键字。然后,第一判重模块72根据已存储消息的位图索引,采用布隆滤波器,对待存储消息和已存储消息进行基于关键字的判重操作。判重结果包括重复和不重复,当待存储消息和已存储消息中的关键字重复时,第一处理模块73可以丢弃该待存储消息结束操作;当待存储消息和已存储消息中的关键字不重复时,第一处理模块73将其写入磁盘。

本发明实施例提供的磁盘存储装置,通过布隆滤波器根据位图索引对消息进行判重,并根据判重结果进行去重或存储处理,在占用少量内存的情况下,即可完成对大量消息的检索,实现了高效的海量消息去重存储。

实施例七

图8为本发明提供的磁盘存储装置另一个实施例的结构示意图,可用于执行如图3所示的方法步骤。如图8所示,在上述图7所示实施例的基础上,第一处理模块73可以包括:第一存储单元731、第一检索单元732和第一处理单元733。

其中,第一存储单元731用于当判重结果为不重复时,将待存储消息写入磁盘;第一检索单元732用于当判重结果为重复时,根据已存储消息的磁盘索引,对待存储消息进行基于关键字的磁盘检索;第一处理单元733用于根据第一检索单元732的磁盘检索结果对待存储消息进行处理。

在本发明实施例中,当判重结果为不重复(即,待存储消息和已存储消息中的关键字不重复)时,第一存储单元731将待存储消息写入磁盘;当判重结果为重复时,由于布隆过滤器存在误判,此时存储消息和已存储消息中的关键字可能是不重复的,因此,第一检索单元732可以根据已存储消息的磁盘索引,对待存储消息进行基于关键字的磁盘(logindex)检索,然后第一处理单元733根据磁盘检索结果对待存储消息进行处理。

具体地,第一处理单元733可以用于当磁盘检索结果为不重复(即,待存储消息和已存储消息中的关键字不重复)时,将待存储消息写入磁盘。当磁盘检索结果为重复时,丢弃该待存储消息结束操作。

进一步地,本发明实施例提供的磁盘存储装置还可以包括第一更新模块81。该第一更新模块6181可以用于在待存储消息被写入磁盘的同时,更新位图索引和磁盘索引,以便对后续产生的消息进行判重和磁盘检索的操作。

本发明实施例提供的磁盘存储装置,首先通过布隆滤波器根据位图索引对消息进行预判重,在占用少量内存的情况下,即可完成对大量消息的检索,然后结合磁盘检索进行定判,进一步降低误判率,根据判重结果进行去重或存储处理,实现了高效的海量消息去重存储。

实施例八

图9为本发明提供的消息推送装置一个实施例的结构示意图,可用于执行如图5b所示的方法步骤。如图9所示,该装置可以包括:第二获取模块91、第二判重模块92和第二处理模块93。

其中,第二获取模块91用于获取待推送消息的关键字,该关键字为待推送消息的目标用户id;第二判重模块92用于根据已推送消息的位图索引,采用布隆滤波器,对待推送消息和已推送消息进行基于关键字的判重操作,其中,已推送消息存储于磁盘中,已推送消息的位图索引存储于内存中;第二处理模块93用于根据第二判重模块92的判重结果,对待推送消息进行推送处理。

进一步地,在本发明实施例中,第二处理模93可以包括:第二存储单元931、第二检索单元932和第二处理单元933。

其中,第二存储单元931用于当判重结果为不重复时,将待推送消息写入磁盘并推送至目标用户id;第二检索单元932用于当判重结果为重复时,根据已推送消息的磁盘索引,对待提送消息进行基于关键字的磁盘检索;第二处理单元933用于根据第二检索单元932的磁盘检索结果对待推送消息进行推送处理。

更进一步地,第二处理单元933可以用于当磁盘检索结果为不重复时,将待推送消息写入磁盘并推送至目标用户id。

另外,本发明实施例提供的消息推送装置,还可以包括:第二更新模块94。该第二更新模块94可以用于在待推送消息被写入磁盘的同时,更新位图索引和磁盘索引。

本发明实施例提供的消息推送装置,首先通过布隆滤波器根据位图索引对消息进行预判重,在占用少量内存的情况下,即可完成对大量消息的检索,然后结合磁盘检索进行定判,进一步降低误判率,根据判重结果进行去重推送处理,实现了高效的海量消息去重推送。

实施例九

以上描述了磁盘存储装置的内部功能和结构,该装置可实现为一种电子设备。图10为本发明提供的电子设备一个实施例的结构示意图。如图10所示,该电子设备包括存储器101和处理器102。

存储器101,用于存储程序。除上述程序之外,存储器101还可被配置为存储其它各种数据以支持在电子设备上的操作。这些数据的示例包括用于在电子设备上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。

存储器101可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。

处理器102,与存储器101耦合,执行存储器101所存储的程序,以用于:

获取待存储消息的关键字;在内存中,对待存储消息和已存储消息进行基于关键字的判重操作;根据判重结果,对待存储消息进行处理。

在一可选实施方式中,处理器102在根据判重结果,对待存储消息进行处理时,具体可用于:

当判重结果为不重复时,将待存储消息写入磁盘;当判重结果为重复时,根据已存储消息的磁盘索引,对待存储消息进行基于关键字的磁盘检索,并根据磁盘检索结果对待存储消息进行处理。

进一步可选地,处理器102在根据磁盘检索结果对待存储消息进行处理时,具体可用于:

当磁盘检索结果为不重复时,将待存储消息写入磁盘;当磁盘检索结果为重复时,结束操作。

进一步,如图10所示,电子设备还可以包括:通信组件103、电源组件104、音频组件105、显示器106等其它组件。图10中仅示意性给出部分组件,并不意味着电子设备只包括图10所示组件。

通信组件103被配置为便于电子设备和其他设备之间有线或无线方式的通信。电子设备可以接入基于通信标准的无线网络,如wifi,2g或3g,或它们的组合。在一个示例性实施例中,通信组件83经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件103还包括近场通信(nfc)模块,以促进短程通信。例如,在nfc模块可基于射频识别(rfid)技术,红外数据协会(irda)技术,超宽带(uwb)技术,蓝牙(bt)技术和其他技术来实现。

基于通信组件103,处理器102可以通过通信组件103将所有消费数据存储到外部数据库中。

电源组件104,为电子设备的各种组件提供电力。电源组件104可以包括电源管理系统,一个或多个电源,及其他与为电子设备生成、管理和分配电力相关联的组件。

音频组件105被配置为输出和/或输入音频信号。例如,音频组件105包括一个麦克风(mic),当电子设备处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器101或经由通信组件103发送。在一些实施例中,音频组件85还包括一个扬声器,用于输出音频信号。

显示器106包括屏幕,其屏幕可以包括液晶显示器(lcd)和触摸面板(tp)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。

实施例十

以上描述了消息推送装置的内部功能和结构,该装置可实现为一种电子设备。图11为本发明提供的电子设备另一个实施例的结构示意图。如图11所示,该电子设备包括存储器111和处理器112。

存储器111,用于存储程序。除上述程序之外,存储器111还可被配置为存储其它各种数据以支持在电子设备上的操作。这些数据的示例包括用于在电子设备上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。

存储器111可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。

处理器112,与存储器111耦合,执行存储器111所存储的程序,以用于:

获取待推送消息的关键字,该关键字为待推送消息的目标用户id;在内存中,对待推送消息和已推送消息进行基于关键字的判重操作;根据判重结果,对待推送消息进行推送处理。

在一可选实施方式中,处理器112在根据判重结果,对待推送消息进行推送处理时,具体可用于:

当判重结果为不重复时,将待推送消息写入磁盘并推送至目标用户id;当判重结果为重复时,根据已推送消息的磁盘索引,对待推送消息进行基于关键字的磁盘检索,并根据磁盘检索结果对待推送消息进行推送处理。

进一步可选地,处理器112在根据磁盘检索结果对待推送消息进行推送处理时,具体可用于:

当磁盘检索结果为不重复时,将待推送消息写入磁盘并推送至目标用户id;当磁盘检索结果为重复时,结束推送操作。

进一步,如图11所示,电子设备还可以包括:通信组件113、电源组件114、音频组件115、显示器116等其它组件。图11中仅示意性给出部分组件,并不意味着电子设备只包括图11所示组件。

通信组件113被配置为便于电子设备和其他设备之间有线或无线方式的通信。电子设备可以接入基于通信标准的无线网络,如wifi,2g或3g,或它们的组合。在一个示例性实施例中,通信组件113经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件113还包括近场通信(nfc)模块,以促进短程通信。例如,在nfc模块可基于射频识别(rfid)技术,红外数据协会(irda)技术,超宽带(uwb)技术,蓝牙(bt)技术和其他技术来实现。

基于通信组件113,处理器112可以通过通信组件113将所有消费数据存储到外部数据库中。

电源组件114,为电子设备的各种组件提供电力。电源组件114可以包括电源管理系统,一个或多个电源,及其他与为电子设备生成、管理和分配电力相关联的组件。

音频组件115被配置为输出和/或输入音频信号。例如,音频组件115包括一个麦克风(mic),当电子设备处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器111或经由通信组件113发送。在一些实施例中,音频组件115还包括一个扬声器,用于输出音频信号。

显示器116包括屏幕,其屏幕可以包括液晶显示器(lcd)和触摸面板(tp)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。

本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1