CN111949912A - 一种基于标签的消息推送方法、装置和系统 - Google Patents
一种基于标签的消息推送方法、装置和系统 Download PDFInfo
- Publication number
- CN111949912A CN111949912A CN202010807012.0A CN202010807012A CN111949912A CN 111949912 A CN111949912 A CN 111949912A CN 202010807012 A CN202010807012 A CN 202010807012A CN 111949912 A CN111949912 A CN 111949912A
- Authority
- CN
- China
- Prior art keywords
- user
- message
- nodes
- label
- user information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/958—Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/951—Indexing; Web crawling techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
- G06F16/9535—Search customisation based on user profiles and personalisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/955—Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
- G06F16/9562—Bookmark management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/55—Push-based network services
Abstract
本申请公开了一种基于标签的消息推送方法、装置和系统,依据预设的存储结构,将用户信息和标签存储至内存中,存储结构为:预设的桶节点包括多个用户节点,用户节点包括多个标签节点,用户节点用于存储用户信息,标签节点用于存储标签。在接收到消息推送指令的情况下,并行搜索各个桶节点中用户节点所包含的标签,将包含有目标标签的用户节点标识为目标用户节点。将消息推送指令所指示的消息,发送给目标用户。可见,利用桶节点、用户节点、以及标签节点之间的存储结构,关联用户信息与标签,在接收到消息推送指令的情况下,并行搜索各个桶节点中用户节点所包含的标签,以确定包含有目标标签的目标用户信息,从而实现指定类型的用户推送消息。
Description
技术领域
本申请涉及互联网技术领域,尤其涉及一种基于标签的消息推送方法、装置和系统。
背景技术
为了给广大客户带来更好更便捷的服务,互联网企业都会使用到消息推送系统,即通过服务端向用户主动推送消息。由于用户的行为数据受到多个维度的影响(例如,消费行为受到诸如消费能力、爱好、性别、以及年龄等信息的影响),若是面向所有用户都推送同样类型的消息,则可能会有一些不良影响,例如,向男性用户推送有关裙子的资讯消息,明显的,这样的消息推送方式较为缺乏合理性。因此,亟需一种能够向指定类型的用户推送消息的消息推送方法。
发明内容
本申请提供了一种基于标签的消息推送方法、装置和系统,目的在于提供一种能够向指定类型的用户推送消息的消息推送方法。
为了实现上述目的,本申请提供了以下技术方案:
一种基于标签的消息推送系统,包括:
标签模块和推送模块;
所述标签模块,用于依据预设的存储结构,将用户信息和标签存储至内存中,所述存储结构为:预设的桶节点包括多个用户节点,所述用户节点包括多个标签节点,所述用户节点用于存储所述用户信息,所述标签节点用于存储所述标签;在接收到消息推送指令的情况下,并行搜索各个所述桶节点中所述用户节点所包含的所述标签,将包含有目标标签的所述用户节点标识为目标用户节点,所述目标标签为所述消息推送指令所指示的所述标签;将目标用户信息发送给所述推送模块,所述目标用户信息为所述目标用户节点所存储的所述用户信息;
所述推送模块,用于将所述消息推送指令所指示的消息,发送给目标用户,所述目标用户为所述目标用户信息所指示的用户。
可选的,所述存储结构还包括:
虚拟节点和应用节点;
其中,所述虚拟节点用于索引所述应用节点;所述应用节点用于存储应用信息;所述应用信息用于指示客户端所属的业务类型;所述虚拟节点包括多个所述应用节点;所述应用节点包括多个所述桶节点。
可选的,所述标签模块还用于:
将第一标签和第一用户信息的对应关系存储至缓存中;在接收到所述消息推送指令的情况下,判断所述第一标签是否为所述目标标签,在所述第一标签为所述目标标签的情况下,将所述缓存中与所述第一标签对应的所述第一用户信息,作为所述目标用户信息;其中,所述第一标签为,预设时间段内被查询的次数大于第一预设阈值的所述标签;所述第一用户信息为,所述预设时间段内被查询的次数大于第二预设阈值的所述用户信息。
可选的,所述标签模块具体用于:
利用预设算法,从所有的所述标签中筛选出所述第一标签、以及从所有的所述用户信息中筛选出所述第一用户信息;判断第一数值与第二数值之间的比值,是否超出预设取值范围;在所述比值不超出所述预设取值范围的情况下,将所述第一标签和所述第一用户信息的对应关系存储至缓存中;其中,所述第一数值为,所述第一标签和所述第一用户信息共同的内存空间占有量;所述第二数值为,所有的所述标签和所述用户信息共同的内存空间占有量。
可选的,所述推送模块包括:
消息入口子模块、消息缓存子模块、推送入口子模块、以及推送服务子模块;
所述消息入口子模块,用于接收所述目标用户信息;在所述目标用户不在线的情况下,将所述目标用户信息和所述消息,发送给所述消息缓存子模块;在所述目标用户在线的情况下,经由所述推送服务子模块,将所述消息发送给所述目标用户;
所述消息缓存子模块,用于为所述目标用户创建所述消息队列,并将所述消息和所述目标用户信息存储至所述消息队列中;
所述推送入口子模块,用于与用户的客户端建立网络连接,监测所述用户是否在线;在所述用户上线的情况下,向所述推送服务子模块和所述消息入口子模块发送用户上线提示;
所述推送服务子模块,用于依据所述用户上线提示,从所述消息队列中获取预存的所述消息和所述目标用户信息,并将所述消息发送给所述目标用户。
可选的,所述消息入口子模块、所述消息缓存子模块、所述推送入口子模块、以及所述推送服务子模块各自的数量为一个或多个。
一种基于标签的消息推送方法,包括:
依据预设的存储结构,预先将用户信息和标签存储至内存中;其中,所述存储结构为:预设的桶节点包括多个用户节点,所述用户节点包括多个标签节点,所述用户节点用于存储所述用户信息,所述标签节点用于存储所述标签;
在接收到消息推送指令的情况下,并行搜索各个所述桶节点中所述用户节点所包含的所述标签,将包含有目标标签的所述用户节点标识为目标用户节点;其中,所述目标标签为所述消息推送指令所指示的所述标签;
将所述消息推送指令所指示的消息,发送给目标用户;其中,所述目标用户为目标用户信息所指示的用户,所述目标用户信息为所述目标用户节点所存储的所述用户信息。
一种基于标签的消息推送装置,包括:
存储单元,用于依据预设的存储结构,预先将用户信息和标签存储至内存中;其中,所述存储结构为:预设的桶节点包括多个用户节点,所述用户节点包括多个标签节点,所述用户节点用于存储所述用户信息,所述标签节点用于存储所述标签;
搜索单元,用于在接收到消息推送指令的情况下,并行搜索各个所述桶节点中所述用户节点所包含的所述标签,将包含有目标标签的所述用户节点标识为目标用户节点;其中,所述目标标签为所述消息推送指令所指示的所述标签;
发送单元,用于将所述消息推送指令所指示的消息,发送给目标用户;其中,所述目标用户为目标用户信息所指示的用户,所述目标用户信息为所述目标用户节点所存储的所述用户信息。
一种计算机可读存储介质,所述计算机可读存储介质包括存储的程序,其中,所述程序执行所述的基于标签的消息推送方法。
一种基于标签的消息推送设备,包括:处理器、存储器和总线;所述处理器与所述存储器通过所述总线连接;
所述存储器用于存储程序,所述处理器用于运行程序,其中,所述程序运行时执所述的基于标签的消息推送方法。
本申请提供的技术方案,依据预设的存储结构,将用户信息和标签存储至内存中,存储结构为:预设的桶节点包括多个用户节点,用户节点包括多个标签节点,用户节点用于存储用户信息,标签节点用于存储标签。在接收到消息推送指令的情况下,并行搜索各个桶节点中用户节点所包含的标签,将包含有目标标签的用户节点标识为目标用户节点,目标标签为消息推送指令所指示的标签。将消息推送指令所指示的消息,发送给目标用户,目标用户为目标用户信息所指示的用户,目标用户信息为目标用户节点所存储的用户信息。可见,利用桶节点、用户节点、以及标签节点之间的存储结构,关联用户信息与标签,在接收到消息推送指令的情况下,并行搜索各个桶节点中用户节点所包含的标签,以确定包含有目标标签的目标用户信息,从而实现用户类型的指定。因此,本申请提供的技术方案能够向指定类型的用户推送消息。相较于一个标签存储多个用户信息的存储方式,基于本申请所述的存储结构,可以利用多核处理器并行查询各个桶节点内的标签和用户信息,有效提升查询速度。并且,相较于现有技术中先搜索标签下的用户信息,再执行多标签查询,导致目标用户信息的重复查询从而影响查询速度,本申请通过搜索用户节点下是否包含有标签,则可直接获得目标用户信息,不会有重复获取目标用户信息,查询速度不会受到任何影响。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a为本申请实施例提供的一种基于标签的消息推送系统的架构示意图;
图1b为本申请实施例提供的一种基于标签的消息推送系统实现向指定类型的用户推送消息的示意图;
图1c为本申请实施例提供的另一种基于标签的消息推送系统实现向指定类型的用户推送消息的示意图;
图2a为本申请实施例提供的一种树结构的示意图;
图2b为本申请实施例提供的另一种树结构的示意图;
图3为本申请实施例提供的一种基于标签的消息推送方法的示意图;
图4为本申请实施例提供的一种基于标签的消息推送装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
如图1a所示,为本申请实施例提供的一种基于标签的消息推送系统的架构示意图,包括:
标签模块100和推送模块200。
其中,推送模块200包括:消息入口子模块201、消息缓存子模块202、推送入口子模块203、以及推送服务子模块204。
其中,消息入口子模块201、消息缓存子模块202、推送入口子模块203、以及推送服务子模块204各自的数量为一个或多个,不仅仅局限于图1a所示,具体的数量可由技术人员根据实际情况进行设置。
在本实施例中,基于标签的消息推送系统实现向指定类型的用户推送消息的具体实现过程,如图1b和图1c所示,包括如下步骤:
S101:标签模块依据预设的存储结构,将用户信息和标签存储至内存中。
其中,存储结构为:预设的桶节点包括多个用户节点,用户节点包括多个标签节点,用户节点用于存储用户信息,标签节点用于存储标签。此外,标签的具体类型可由技术人员根据实际情况进行设置,这里不再赘述。
所谓的桶节点,实质上就是将数据(即用户信息)集合为一个桶,其实现原理为:每一个桶对应一个整数编号,基于哈希函数可以将用户信息转化为整数编号,将不同的用户信息放置于不同的桶内,依据用户信息对应的整数编号便可获悉用户信息所在的桶,由于每个桶都可以使用单核处理器进行操作,因此,可以利用多核处理器实现各个桶的并行搜索,从而提高标签搜索效率。
需要说明的是,存储结构还包括:虚拟节点和应用节点。其中,虚拟节点用于索引应用节点,应用节点用于存储应用信息,应用信息用于指示客户端所属的业务类型(例如微信、支付宝等类型),虚拟节点包括多个应用节点,应用节点包括多个桶节点。
需要强调的是,存储结构的具体样式包括但不限于是树结构,树结构的具体样式,可以参见下述图2a所示,在本实施例中,应用节点作为预设的虚拟节点的分枝,桶节点作为应用节点的分枝,用户节点作为桶节点的分枝,标签节点作为用户节点的分枝。
S102:标签模块利用预设算法,从所有的标签中筛选出第一标签、以及从所有的用户信息中筛选出第一用户信息。
其中,第一标签为,预设时间段内被查询的次数大于第一预设阈值的标签。第一用户信息为,预设时间段内被查询的次数大于第二预设阈值的用户信息。
需要说明的是,预设算法包括但不限于是最近最少使用(Least Recently Used,LRU)算法,利用LRU算法从所有标签中筛选出第一标签、以及从所有的用户信息中筛选出第一用户信息的具体实现过程,为本领技术人员所熟悉的公知常识,这里不再赘述。
S103:标签模块判断第一数值与第二数值之间的比值,是否超出预设取值范围。
若第一数值与第二数值之间的比值超出预设取值范围,则禁止将第一标签和第一用户信息存储至缓存中,否则执行S104。
其中,第一数值为,第一标签和第一用户信息共同的内存空间占有量。第二数值为,所有的标签和用户信息共同的内存空间占有量。
需要强调的是,在第一数值与第二数值之间的比值超出预设取值范围的情况下,禁止将第一标签和第一用户信息存储至缓存中,能够有效避免使用过多的内存。
S104:在比值不超出预设取值范围的情况下,将第一标签和第一用户信息的对应关系存储至缓存中。
其中,由于缓存中预存有第一标签和第一用户信息的对应关系,缓存的查询效率比内存高,因此,每次查询内存前,可以预先查询缓存,从而提升查询速度。
需要说明的是,在本实施例中,可以利用键值对(key-value)记录第一标签和第一用户信息的对应关系,key用于记录第一标签,value用于记录第一用户信息。此外,缓存中的存储结构的具体样式包括但不限于是树结构,具体的,可以参见下述图2b,在本实施例中,应用节点作为预设的虚拟节点的分枝,键值对作为应用节点的分枝。
S105:在接收到消息推送指令的情况下,标签模块判断第一标签是否为目标标签。
若第一标签为目标标签,则执行S106,否则执行S107。
其中,目标标签为消息推送指令所指示的标签,即消息接收对象的类型。
S106:标签模块将缓存中与第一标签对应的第一用户信息,作为目标用户信息。
在执行S106后,继续执行S108。
S107:标签模块并行搜索各个桶节点中用户节点所包含的标签,将包含有目标标签的用户节点标识为目标用户节点。
在执行S107后,继续执行S108。
其中,目标用户节点所存储的用户信息,即为目标用户信息。
S108:标签模块向消息入口子模发送目标用户信息。
其中,消息入口子模块还会接收到消息推送指令所指示的消息。
S109:推送入口子模块与用户的客户端建立网络连接,监测用户是否在线。
其中,与用户的客户端建立网络连接,监测用户是否在线的具体实现过程,为本领域技术人员所熟悉的公知常识,这里不再赘述。
S110:在用户上线的情况下,推送入口子模块向推送服务子模块和消息入口子模块发送用户上线提示。
其中,用户上线提示包括在线用户的用户信息。
S111:消息入口子模块依据目标用户信息和用户上线提示,判断目标用户是否在线。
若目标用户在线,则执行S112,否则执行S113。
S112:在目标用户在线的情况下,经由推送服务子模块,将消息发送给目标用户。
S113:在目标用户不在线的情况下,将目标用户信息和消息,发送给消息缓存子模块。
S114:消息缓存子模块为目标用户创建消息队列,并将消息存储至消息队列中。
其中,目标用户为目标用户信息所指示的用户。
需要说明的是,为目标用户创建消息队列的具体实现过程,包括但不限于采用远程字典服务(Remote Dictionary Server,Redis)集群等现有技术手段实现。
S115:推送服务子模块依据用户上线提示,从消息队列中获取预存的消息和目标用户信息,并将消息发送给目标用户。
其中,依据用户上线提示,从消息队列中获取预存的消息和目标用户信息,并将消息发送给目标用户,可以实现在用户不在线的时候缓存消息,直至用户上线后再将消息推送至用户的客户端,极大丰富了用户的使用体验。
综上所述,依据预设的存储结构,将用户信息和标签存储至内存中,存储结构为:预设的桶节点包括多个用户节点,用户节点包括多个标签节点,用户节点用于存储用户信息,标签节点用于存储标签。在接收到消息推送指令的情况下,并行搜索各个桶节点中用户节点所包含的标签,将包含有目标标签的用户节点标识为目标用户节点,目标标签为消息推送指令所指示的标签。将消息推送指令所指示的消息,发送给目标用户,目标用户为目标用户信息所指示的用户,目标用户信息为目标用户节点所存储的用户信息。可见,利用桶节点、用户节点、以及标签节点之间的存储结构,关联用户信息与标签,在接收到消息推送指令的情况下,并行搜索各个桶节点中用户节点所包含的标签,以确定包含有目标标签的目标用户信息,从而实现用户类型的指定。因此,本实施例提供的技术方案能够向指定类型的用户推送消息。相较于一个标签存储多个用户信息的存储方式,基于本实施例提供的存储结构。可以利用多核处理器并行查询各个桶节点内的标签和用户信息,有效提升查询速度。并且,相较于现有技术中先搜索标签下的用户信息,再执行多标签查询,导致目标用户信息的重复查询从而影响查询速度,本实施例通过搜索用户节点下是否包含有标签,则可直接获得目标用户信息,不会有重复获取目标用户信息,查询速度不会受到任何影响。
需要说明的是,上述实施例中,无论是S102-S105所提及的,关于将第一标签和第一用户信息的对应关系存储至缓存中、以及将缓存中与第一标签对应的第一用户信息,作为目标用户信息,还是S108-S115所提及的,依据推送模块下各个子模块的功能,将消息推送给目标用户的,都是本申请提出的技术方案的一种优选的实现方式。在实际应用中,无需将第一标签和第一用户信息的对应关系存储至缓存中、以及将缓存中与第一标签对应的第一用户信息,作为目标用户信息,也可以实现本申请所述的技术方案,无需采用推送模块下各个子模块,直接将消息推送给目标用户,也是可以实现本申请所述的技术方案的。
为此,上述实施例提供的流程,可以概括为图3所示的方法。
如图3所示,为本申请实施例提供的一种基于标签的消息推送方法的示意图,包括如下步骤:
S301:依据预设的存储结构,预先将用户信息和标签存储至内存中。
其中,存储结构为:预设的桶节点包括多个用户节点,用户节点包括多个标签节点,用户节点用于存储用户信息,标签节点用于存储标签。
S302:在接收到消息推送指令的情况下,并行搜索各个桶节点中用户节点所包含的标签,将包含有目标标签的用户节点标识为目标用户节点。
其中,目标标签为消息推送指令所指示的标签。
S303:将消息推送指令所指示的消息,发送给目标用户。
其中,目标用户为目标用户信息所指示的用户,目标用户信息为目标用户节点所存储的用户信息。
综上所述,依据预设的存储结构,将用户信息和标签存储至内存中,存储结构为:预设的桶节点包括多个用户节点,用户节点包括多个标签节点,用户节点用于存储用户信息,标签节点用于存储标签。在接收到消息推送指令的情况下,并行搜索各个桶节点中用户节点所包含的标签,将包含有目标标签的用户节点标识为目标用户节点,目标标签为消息推送指令所指示的标签。将消息推送指令所指示的消息,发送给目标用户,目标用户为目标用户信息所指示的用户,目标用户信息为目标用户节点所存储的用户信息。可见,利用桶节点、用户节点、以及标签节点之间的存储结构,关联用户信息与标签,在接收到消息推送指令的情况下,并行搜索各个桶节点中用户节点所包含的标签,以确定包含有目标标签的目标用户信息,从而实现用户类型的指定。因此,本实施例提供的技术方案能够向指定类型的用户推送消息。相较于一个标签存储多个用户信息的存储方式,基于本实施例提供的存储结构,可以利用多核处理器并行查询各个桶节点内的标签和用户信息,有效提升查询速度。并且,相较于现有技术中先搜索标签下的用户信息,再执行多标签查询,导致目标用户信息的重复查询从而影响查询速度,本实施例通过搜索用户节点下是否包含有标签,则可直接获得目标用户信息,不会有重复获取目标用户信息,查询速度不会受到任何影响。
与上述本申请实施例提供的基于标签的消息推送方法相对应,本申请还提供了一种基于标签的消息推送装置。
如图4所示,为本申请实施例提供的一种基于标签的消息推送装置的结构示意图,包括:
存储单元401,用于依据预设的存储结构,预先将用户信息和标签存储至内存中;其中,存储结构为:预设的桶节点包括多个用户节点,用户节点包括多个标签节点,用户节点用于存储用户信息,标签节点用于存储标签。此外,存储结构还包括虚拟节点和应用节点,虚拟节点用于索引应用节点,应用节点用于存储应用信息,应用信息用于指示客户端所属的业务类型,虚拟节点包括多个应用节点,应用节点包括多个桶节点。
其中,存储单元401还用于:利用预设算法,从所有的标签中筛选出第一标签、以及从所有的用户信息中筛选出第一用户信息,判断第一数值与第二数值之间的比值,是否超出预设取值范围,在比值不超出预设取值范围的情况下,将第一标签和第一用户信息的对应关系存储至缓存中,第一数值为第一标签和第一用户信息共同的内存空间占有量,第二数值为所有的标签和用户信息共同的内存空间占有量,第一标签为预设时间段内被查询的次数大于第一预设阈值的标签,第一用户信息为预设时间段内被查询的次数大于第二预设阈值的用户信息。
搜索单元402,用于在接收到消息推送指令的情况下,并行搜索各个桶节点中用户节点所包含的标签,将包含有目标标签的用户节点标识为目标用户节点,其中,目标标签为消息推送指令所指示的标签。
其中,搜索单元402还用于:在接收到消息推送指令的情况下,判断第一标签是否为目标标签,在第一标签为目标标签的情况下,将缓存中与第一标签对应的第一用户信息,作为目标用户信息。
发送单元403,用于将消息推送指令所指示的消息,发送给目标用户,其中,目标用户为目标用户信息所指示的用户,目标用户信息为目标用户节点所存储的用户信息。
其中,发送单元403具体用于:与用户的客户端建立网络连接,监测用户是否在线,在目标用户不在线的情况下,为目标用户创建消息队列,并将消息和目标用户信息存储至消息队列中,直至收到用户上线提示,从消息队列中获取预存的消息,并将消息发送给目标用户,在目标用户在线的情况下,将消息发送给目标用户。
综上所述,依据预设的存储结构,将用户信息和标签存储至内存中,存储结构为:预设的桶节点包括多个用户节点,用户节点包括多个标签节点,用户节点用于存储用户信息,标签节点用于存储标签。在接收到消息推送指令的情况下,并行搜索各个桶节点中用户节点所包含的标签,将包含有目标标签的用户节点标识为目标用户节点,目标标签为消息推送指令所指示的标签。将消息推送指令所指示的消息,发送给目标用户,目标用户为目标用户信息所指示的用户,目标用户信息为目标用户节点所存储的用户信息。可见,利用桶节点、用户节点、以及标签节点之间的存储结构,关联用户信息与标签,在接收到消息推送指令的情况下,并行搜索各个桶节点中用户节点所包含的标签,以确定包含有目标标签的目标用户信息,从而实现用户类型的指定。因此,本实施例提供的技术方案能够向指定类型的用户推送消息。相较于一个标签存储多个用户信息的存储方式,基于本实施例提供的存储结构,可以利用多核处理器并行查询各个桶节点内的标签和用户信息,有效提升查询速度。并且,相较于现有技术中先搜索标签下的用户信息,再执行多标签查询,导致目标用户信息的重复查询从而影响查询速度,本实施例通过搜索用户节点下是否包含有标签,则可直接获得目标用户信息,不会有重复获取目标用户信息,查询速度不会受到任何影响。
本申请还提供了一种计算机可读存储介质,计算机可读存储介质包括存储的程序,其中,程序执行上述本申请提供的基于标签的消息推送方法。
本申请还提供了一种基于标签的消息推送设备,包括:处理器、存储器和总线。处理器与存储器通过总线连接,存储器用于存储程序,处理器用于运行程序,其中,程序运行时执行上述本申请提供的基于标签的消息推送方法,包括如下步骤:
依据预设的存储结构,预先将用户信息和标签存储至内存中;其中,所述存储结构为:预设的桶节点包括多个用户节点,所述用户节点包括多个标签节点,所述用户节点用于存储所述用户信息,所述标签节点用于存储所述标签;
在接收到消息推送指令的情况下,并行搜索各个所述桶节点中所述用户节点所包含的所述标签,将包含有目标标签的所述用户节点标识为目标用户节点;其中,所述目标标签为所述消息推送指令所指示的所述标签;
将所述消息推送指令所指示的消息,发送给目标用户;其中,所述目标用户为目标用户信息所指示的用户,所述目标用户信息为所述目标用户节点所存储的所述用户信息。
本申请实施例方法所述的功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算设备可读取存储介质中。基于这样的理解,本申请实施例对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一台计算设备(可以是个人计算机,服务器,移动计算设备或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种基于标签的消息推送系统,其特征在于,包括:
标签模块和推送模块;
所述标签模块,用于依据预设的存储结构,将用户信息和标签存储至内存中,所述存储结构为:预设的桶节点包括多个用户节点,所述用户节点包括多个标签节点,所述用户节点用于存储所述用户信息,所述标签节点用于存储所述标签;在接收到消息推送指令的情况下,并行搜索各个所述桶节点中所述用户节点所包含的所述标签,将包含有目标标签的所述用户节点标识为目标用户节点,所述目标标签为所述消息推送指令所指示的所述标签;将目标用户信息发送给所述推送模块,所述目标用户信息为所述目标用户节点所存储的所述用户信息;
所述推送模块,用于将所述消息推送指令所指示的消息,发送给目标用户,所述目标用户为所述目标用户信息所指示的用户。
2.根据权利要求1所述的系统,其特征在于,所述存储结构还包括:
虚拟节点和应用节点;
其中,所述虚拟节点用于索引所述应用节点;所述应用节点用于存储应用信息;所述应用信息用于指示客户端所属的业务类型;所述虚拟节点包括多个所述应用节点;所述应用节点包括多个所述桶节点。
3.根据权利要求1所述的系统,其特征在于,所述标签模块还用于:
将第一标签和第一用户信息的对应关系存储至缓存中;在接收到所述消息推送指令的情况下,判断所述第一标签是否为所述目标标签,在所述第一标签为所述目标标签的情况下,将所述缓存中与所述第一标签对应的所述第一用户信息,作为所述目标用户信息;其中,所述第一标签为,预设时间段内被查询的次数大于第一预设阈值的所述标签;所述第一用户信息为,所述预设时间段内被查询的次数大于第二预设阈值的所述用户信息。
4.根据权利要求3所述的系统,其特征在于,所述标签模块具体用于:
利用预设算法,从所有的所述标签中筛选出所述第一标签、以及从所有的所述用户信息中筛选出所述第一用户信息;判断第一数值与第二数值之间的比值,是否超出预设取值范围;在所述比值不超出所述预设取值范围的情况下,将所述第一标签和所述第一用户信息的对应关系存储至缓存中;其中,所述第一数值为,所述第一标签和所述第一用户信息共同的内存空间占有量;所述第二数值为,所有的所述标签和所述用户信息共同的内存空间占有量。
5.根据权利要求1所述的系统,其特征在于,所述推送模块包括:
消息入口子模块、消息缓存子模块、推送入口子模块、以及推送服务子模块;
所述消息入口子模块,用于接收所述目标用户信息;在所述目标用户不在线的情况下,将所述目标用户信息和所述消息,发送给所述消息缓存子模块;在所述目标用户在线的情况下,经由所述推送服务子模块,将所述消息发送给所述目标用户;
所述消息缓存子模块,用于为所述目标用户创建所述消息队列,并将所述消息和所述目标用户信息存储至所述消息队列中;
所述推送入口子模块,用于与用户的客户端建立网络连接,监测所述用户是否在线;在所述用户上线的情况下,向所述推送服务子模块和所述消息入口子模块发送用户上线提示;
所述推送服务子模块,用于依据所述用户上线提示,从所述消息队列中获取预存的所述消息和所述目标用户信息,并将所述消息发送给所述目标用户。
6.根据权利要求5所述的系统,其特征在于,所述消息入口子模块、所述消息缓存子模块、所述推送入口子模块、以及所述推送服务子模块各自的数量为一个或多个。
7.一种基于标签的消息推送方法,其特征在于,包括:
依据预设的存储结构,预先将用户信息和标签存储至内存中;其中,所述存储结构为:预设的桶节点包括多个用户节点,所述用户节点包括多个标签节点,所述用户节点用于存储所述用户信息,所述标签节点用于存储所述标签;
在接收到消息推送指令的情况下,并行搜索各个所述桶节点中所述用户节点所包含的所述标签,将包含有目标标签的所述用户节点标识为目标用户节点;其中,所述目标标签为所述消息推送指令所指示的所述标签;
将所述消息推送指令所指示的消息,发送给目标用户;其中,所述目标用户为目标用户信息所指示的用户,所述目标用户信息为所述目标用户节点所存储的所述用户信息。
8.一种基于标签的消息推送装置,其特征在于,包括:
存储单元,用于依据预设的存储结构,预先将用户信息和标签存储至内存中;其中,所述存储结构为:预设的桶节点包括多个用户节点,所述用户节点包括多个标签节点,所述用户节点用于存储所述用户信息,所述标签节点用于存储所述标签;
搜索单元,用于在接收到消息推送指令的情况下,并行搜索各个所述桶节点中所述用户节点所包含的所述标签,将包含有目标标签的所述用户节点标识为目标用户节点;其中,所述目标标签为所述消息推送指令所指示的所述标签;
发送单元,用于将所述消息推送指令所指示的消息,发送给目标用户;其中,所述目标用户为目标用户信息所指示的用户,所述目标用户信息为所述目标用户节点所存储的所述用户信息。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的程序,其中,所述程序执行权利要求7所述的基于标签的消息推送方法。
10.一种基于标签的消息推送设备,其特征在于,包括:处理器、存储器和总线;所述处理器与所述存储器通过所述总线连接;
所述存储器用于存储程序,所述处理器用于运行程序,其中,所述程序运行时执行权利要求7所述的基于标签的消息推送方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010807012.0A CN111949912B (zh) | 2020-08-12 | 2020-08-12 | 一种基于标签的消息推送方法、装置和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010807012.0A CN111949912B (zh) | 2020-08-12 | 2020-08-12 | 一种基于标签的消息推送方法、装置和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111949912A true CN111949912A (zh) | 2020-11-17 |
CN111949912B CN111949912B (zh) | 2021-05-18 |
Family
ID=73332303
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010807012.0A Active CN111949912B (zh) | 2020-08-12 | 2020-08-12 | 一种基于标签的消息推送方法、装置和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111949912B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112559522A (zh) * | 2020-12-07 | 2021-03-26 | 百度在线网络技术(北京)有限公司 | 数据存储方法、装置、查询方法、电子设备及可读介质 |
JP2023509812A (ja) * | 2020-12-07 | 2023-03-10 | バイドゥ オンライン ネットワーク テクノロジー(ペキン) カンパニー リミテッド | データ記憶方法、装置、クエリ方法、電子機器および可読媒体 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105354202A (zh) * | 2014-08-20 | 2016-02-24 | 阿里巴巴集团控股有限公司 | 数据推送方法及装置 |
CN106254439A (zh) * | 2016-07-29 | 2016-12-21 | 努比亚技术有限公司 | 一种推送方法、装置以及一种移动设备管理系统 |
WO2017128082A1 (zh) * | 2016-01-26 | 2017-08-03 | 刘建兵 | 推荐路径时的信息推送方法以及导航系统 |
CN107040593A (zh) * | 2017-03-31 | 2017-08-11 | 努比亚技术有限公司 | 消息推送装置及方法 |
CN107980118A (zh) * | 2015-06-10 | 2018-05-01 | 无比视视觉技术有限公司 | 使用多线程处理的多核处理器设备 |
CN110059237A (zh) * | 2019-04-18 | 2019-07-26 | 合肥天毅网络传媒有限公司 | 一种基于搜索引擎的爱好信息采集系统及其推荐方法 |
CN110149392A (zh) * | 2019-05-17 | 2019-08-20 | 优信拍(北京)信息科技有限公司 | 一种推送消息的管理方法及装置 |
CN110321347A (zh) * | 2019-05-30 | 2019-10-11 | 上海数据交易中心有限公司 | 数据匹配方法及装置、存储介质、终端 |
CN110704750A (zh) * | 2019-10-21 | 2020-01-17 | 秒针信息技术有限公司 | 基于用户标签的文章推送方法、装置、设备及存储介质 |
-
2020
- 2020-08-12 CN CN202010807012.0A patent/CN111949912B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105354202A (zh) * | 2014-08-20 | 2016-02-24 | 阿里巴巴集团控股有限公司 | 数据推送方法及装置 |
CN107980118A (zh) * | 2015-06-10 | 2018-05-01 | 无比视视觉技术有限公司 | 使用多线程处理的多核处理器设备 |
WO2017128082A1 (zh) * | 2016-01-26 | 2017-08-03 | 刘建兵 | 推荐路径时的信息推送方法以及导航系统 |
CN106254439A (zh) * | 2016-07-29 | 2016-12-21 | 努比亚技术有限公司 | 一种推送方法、装置以及一种移动设备管理系统 |
CN107040593A (zh) * | 2017-03-31 | 2017-08-11 | 努比亚技术有限公司 | 消息推送装置及方法 |
CN110059237A (zh) * | 2019-04-18 | 2019-07-26 | 合肥天毅网络传媒有限公司 | 一种基于搜索引擎的爱好信息采集系统及其推荐方法 |
CN110149392A (zh) * | 2019-05-17 | 2019-08-20 | 优信拍(北京)信息科技有限公司 | 一种推送消息的管理方法及装置 |
CN110321347A (zh) * | 2019-05-30 | 2019-10-11 | 上海数据交易中心有限公司 | 数据匹配方法及装置、存储介质、终端 |
CN110704750A (zh) * | 2019-10-21 | 2020-01-17 | 秒针信息技术有限公司 | 基于用户标签的文章推送方法、装置、设备及存储介质 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112559522A (zh) * | 2020-12-07 | 2021-03-26 | 百度在线网络技术(北京)有限公司 | 数据存储方法、装置、查询方法、电子设备及可读介质 |
WO2022121227A1 (zh) * | 2020-12-07 | 2022-06-16 | 百度在线网络技术(北京)有限公司 | 数据存储方法、装置、查询方法、电子设备及可读介质 |
JP2023509812A (ja) * | 2020-12-07 | 2023-03-10 | バイドゥ オンライン ネットワーク テクノロジー(ペキン) カンパニー リミテッド | データ記憶方法、装置、クエリ方法、電子機器および可読媒体 |
JP7451697B2 (ja) | 2020-12-07 | 2024-03-18 | バイドゥ オンライン ネットワーク テクノロジー(ペキン) カンパニー リミテッド | データ記憶方法、装置、クエリ方法、電子機器および可読媒体 |
Also Published As
Publication number | Publication date |
---|---|
CN111949912B (zh) | 2021-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107515878B (zh) | 一种数据索引的管理方法及装置 | |
CN111835760B (zh) | 报警信息处理方法及装置、计算机存储介质、电子设备 | |
CN111949912B (zh) | 一种基于标签的消息推送方法、装置和系统 | |
CN110166435B (zh) | 采用负载均衡进行动态调度的拟态Web网关系统及方法 | |
CN111090807B (zh) | 一种基于知识图谱的用户识别方法及装置 | |
Ghazimirsaeed et al. | Communication‐aware message matching in MPI | |
CN112069175B (zh) | 数据查询的方法、装置及电子设备 | |
CN113568940A (zh) | 数据查询的方法、装置、设备以及存储介质 | |
CN104217032A (zh) | 数据库维度的处理方法及装置 | |
CN109213972B (zh) | 确定文档相似度的方法、装置、设备和计算机存储介质 | |
CN115423030A (zh) | 一种设备识别的方法和装置 | |
CN112260935B (zh) | 消息处理方法、装置、电子设备及可读存储介质 | |
CN110933068B (zh) | 黑白名单实时优化方法、装置、服务器及存储介质 | |
CN113656466A (zh) | 保单数据查询方法、装置、设备及存储介质 | |
CN113285933A (zh) | 用户访问控制方法、装置、电子设备与存储介质 | |
CN112528339A (zh) | 一种基于Caché数据库的数据脱敏方法及电子设备 | |
CN110505238A (zh) | 基于edr的消息队列的处理装置和方法 | |
CN113672281A (zh) | 代码差异查询方法、装置、设备及存储介质 | |
CN115237958A (zh) | 风险监控方法、装置、存储介质和服务端 | |
CN109542601B (zh) | 策略编译方法、装置、电子设备及计算机存储介质 | |
CN116647412B (zh) | 一种Web服务器的安全防御方法和系统 | |
CN110489515B (zh) | 通讯录检索的方法、服务器及存储介质 | |
CN112732467A (zh) | 一种大规模数据共享方法、装置及存储介质 | |
CN116644062A (zh) | 基于b+树的人流分析方法、双b+树的构建方法及装置 | |
CN114968575A (zh) | 一种基于异步任务的防重复消费的方法及相关装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |