掌桥专利:专业的专利平台
掌桥专利
首页

数据存储方法、信息推送方法以及装置

文献发布时间:2023-06-19 11:49:09


数据存储方法、信息推送方法以及装置

技术领域

本申请实施例涉及大数据领域,尤其涉及一种数据存储方法、信息推送方法以及装置。

背景技术

远程字典服务(Remote Dictionary Server,redis),是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、键值对(Key-Value)数据库,并提供多种语言的应用程序编程接口(Application Programming Interface,API)。

在现有技术中,在采用redis数据库进行数据存储时,通常基于Key-Value的方式实现,如信息查询或推送等场景中,系统可以构建用于表征设备的标识与用户的标识的Key(为设备的标识)-Value(为用户的标识),并基于Key-Value在redis数据库中存储用户的标识,其中,设备为用户所用。

然而,采用上述将待存储数据直接存储至redis数据库,随着数据量的增加,可能造成因redis数据库中的存储空间的占用量增大,而导致redis数据库的存储空间的消耗急剧增加,影响redis数据库的存储性能。

发明内容

本申请实施例提供一种一种数据存储方法、信息推送方法以及装置,用以解决上述技术问题中的至少一种。

一个方面,本申请实施例提供一种数据存储方法,包括:

确定用于存储每一待存储数据对应的存储空间,其中,各存储空间为远程字典服务redis数据库的组成单元;

在每一所述待存储数据对应的存储空间中,为每一所述待存储数据分配存储位置,并将每一所述待存储数据存储至为每一所述待存储数据分配的存储位置,其中,每一存储空间包括多个存储位置。

在一些实施例中,每一所述待存储数据包括与设备标识对应的待存储数据,每一所述设备标识为字符串序列;确定用于存储每一待存储数据对应的存储空间,包括:

基于第一哈希算法将每一字符串序列转换为第一初始哈希值;

根据所述第一初始哈希值确定每一所述待存储数据对应的存储空间。

在一些实施例中,每一所述存储空间包括序号属性;根据所述第一初始哈希值确定每一所述待存储数据对应的存储空间,包括:

基于所述第一初始哈希值对多个所述存储空间的数量进行取余处理,得到用于存储每一所述待存储数据对应的序号属性;

基于序号属性确定每一所述待存储数据对应的存储空间。

在一些实施例中,基于所述第一初始哈希值对多个所述存储空间的数量进行取余处理,得到用于存储每一所述待存储数据对应的序号属性,包括:

对所述第一初始哈希值进行长整型转换处理,得到第一目标哈希值;

基于所述第一目标哈希值对多个所述存储空间的数量进行取余处理,得到用于存储每一所述待存储数据对应的序号属性。

在一些实施例中,每一所述存储位置包括地址属性,每一所述待存储数据对应设备标识,每一所述设备标识为字符串序列;在每一所述待存储数据对应的存储空间中,为每一所述待存储数据分配存储位置,包括:

基于第二哈希算法将每一字符串序列转换为第二初始哈希值;

将所述第二初始哈希值确定为地址属性,并基于确定出的地址属性确定每一所述待存储数据在对应存储空间中的存储位置。

在一些实施例中,将所述第二初始哈希值确定为地址属性,包括:

对所述第二初始哈希值进行长整型转换处理,得到第二目标哈希值,并将所述第二目标哈希值确定为地址属性。

在一些实施例中,在将每一所述待存储数据存储至为每一所述待存储数据分配的存储位置之后,还包括:

构建每一所述待存储数据的哈希类型的数据存储结构,其中,哈希类型的数据存储结构中包括每一所述待存储数据及对应的存储空间的键值对,还包括每一待存储数据及对应的存储位置的键值对。

第二个方面,本申请实施例提供一种信息推送方法,包括:

确定待推荐用户的设备标识和待推送信息;

基于所述设备标识从远程字典服务redis数据库中获取与所述设备标识对应的用户标识,并根据所述用户标识推送所述待推送信息,其中,所述用户标识是基于第一方面所述的方法存储的待存储数据。

在一些实施例中,基于所述设备标识从远程字典服务redis数据库中获取与所述设备标识对应的用户标识,包括:

根据所述设备标识依次确定用于存储所述用户标识的存储空间和存储位置,并从所述存储位置中读取所述用户标识。

第三个方面,本申请实施例提供一种数据存储装置,包括:

第一确定单元,用于确定用于存储每一待存储数据对应的存储空间,其中,各存储空间为远程字典服务redis数据库的组成单元;

分配单元,用于在每一所述待存储数据对应的存储空间中,为每一所述待存储数据分配存储位置;

存储单元,用于将每一所述待存储数据存储至为每一所述待存储数据分配的存储位置,其中,每一存储空间包括多个存储位置。

在一些实施例中,每一所述待存储数据包括与设备标识对应的待存储数据,每一所述设备标识为字符串序列;所述第一确定单元包括:

第一转换子单元,用于基于第一哈希算法将每一字符串序列转换为第一初始哈希值;

第一确定子单元,用于根据所述第一初始哈希值确定每一所述待存储数据对应的存储空间。

在一些实施例中,每一所述存储空间包括序号属性;所述第一确定子单元包括:

取余模块,用于基于所述第一初始哈希值对多个所述存储空间的数量进行取余处理,得到用于存储每一所述待存储数据对应的序号属性;

确定模块,用于基于序号属性确定每一所述待存储数据对应的存储空间。

在一些实施例中,所述取余模块包括:

转换子模块,用于对所述第一初始哈希值进行长整型转换处理,得到第一目标哈希值;

取余子模块,用于基于所述第一目标哈希值对多个所述存储空间的数量进行取余处理,得到用于存储每一所述待存储数据对应的序号属性。

在一些实施例中,每一所述存储位置包括地址属性,每一所述待存储数据对应设备标识,每一所述设备标识为字符串序列;所述分配单元包括:

第二转换子单元,用于基于第二哈希算法将每一字符串序列转换为第二初始哈希值;

第二确定子单元,用于将所述第二初始哈希值确定为地址属性,并基于确定出的地址属性确定每一所述待存储数据在对应存储空间中的存储位置。

在一些实施例中,所述第二确定子单元用于,对所述第二初始哈希值进行长整型转换处理,得到第二目标哈希值,并将所述第二目标哈希值确定为地址属性。

在一些实施例中,还包括:

构建单元,用于构建每一所述待存储数据的哈希类型的数据存储结构,其中,哈希类型的数据存储结构中包括每一所述待存储数据及对应的存储空间的键值对,还包括每一待存储数据及对应的存储位置的键值对。

第四个方面,本申请实施例提供一种信息推送装置,包括:

第二确定单元,用于确定待推荐用户的设备标识和待推送信息;

获取单元,用于基于所述设备标识从远程字典服务redis数据库中获取与所述设备标识对应的用户标识;

推送单元,用于根据所述用户标识推送所述待推送信息,其中,所述用户标识是基于第一方面所述的方法存储的待存储数据。

在一些实施例中,所述获取单元用于,根据所述设备标识依次确定用于存储所述用户标识的存储空间和存储位置,并从所述存储位置中读取所述用户标识。

第五个方面,本申请实施例提供一种电子设备,包括:存储器,处理器;

存储器;用于存储所述处理器可执行指令的存储器;

其中,所述处理器被配置为实现如第一方面所述的方法;或者,所述处理器被配置为实现如第二方面所述的方法。

第六个方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如第一方面所述的方法;或者,所述计算机执行指令被处理器执行时用于实现如第二方面所述的方法。

本申请实施例提供一种数据存储方法、信息推送方法以及装置,包括:确定用于存储每一待存储数据对应的存储空间,其中,各存储空间为远程字典服务redis数据库的组成单元,在每一待存储数据对应的存储空间中,为每一待存储数据分配存储位置,并将每一待存储数据存储至为每一待存储数据分配的存储位置,其中,每一存储空间包括多个存储位置,在本实施例中,通过依次为待存储数据确定存储空间、以及存储空间中的存储位置,以便基于确定出的存储位置对待存储数据进行存储,提高了数据存储的灵活性和多样性,且实现了充分利用存储空间,提高存储资源利用率的技术效果。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。

图1为本申请一个实施例的数据存储方法的示意图;

图2为本申请另一实施例的数据存储方法的示意图;

图3为本申请实施例的redis数据库的示意图;

图4为采用相关技术的方案存储待存储数据时的redis数据库的内存占用情况的示意图;

图5为采用本实施例的方案存储待存储数据时的redis数据库的内存占用情况的示意图;

图6为本申请实施例的信息推送方法可以适用的应用场景示意图;

图7为本申请实施例的信息推送方法的示意图;

图8为本申请一个实施例的数据存储装置的示意图;

图9为本申请另一实施例的数据存储装置的示意图;

图10为本申请实施例的信息推送装置的示意图;

图11是本申请实施例的电子设备的框图

通过上述附图,已示出本公开明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本公开构思的范围,而是通过参考特定实施例为本领域技术人员说明本公开的概念。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。

对本申请实施例所涉及的名词进行解释如下:

数据:是指对客观事件进行记录并可以鉴别的符号,是对客观事物的性质、状态以及相互关系等进行记载的物理符号或这些物理符号的组合。在本实施例中,数据可以为互联网环境中的用户标识,也可以为其他信息。

哈希算法:也可以称为散列、杂凑,是指把任意长度的输入(又叫做预映射pre-image)通过哈希算法(或者称为散列算法)变换成固定长度的输出,该输出就是哈希值(或者散列值)。这种转换是一种压缩映射,也就是说,哈希值(或者散列值)的空间通常远小于输入的空间,也可以简单理解为一种将任意长度的数据(或消息)压缩到某一固定长度的数据(或消息)摘要的算法(或函数)。

字符串序列:是指由字符串或串(String)组成的序列,即字符串序列是由数字、字母、下划线组成的一串字符的序列。

长整型(long integer):是计算机程序语言,是指程序设计中数据类型的一种表现方式,一般情况下用long表示长整型,为long int的缩写,长度至少32位,而64位类Unix系统为64位。

其中,长整型可以包括:无符号长整型(unsigned long int)和有符号长整型(long int)。

无符号长整型:是指无符号32位整数,取值范围为0到4294967295(2

有符号长整型:是指有符号32位整数,取值范围为:-2147483648到2147483647,即为-2

随着互联网技术的发展,资讯相关的数据和用户相关的数据极速增长,即数据量增长非常迅猛,如何对庞大的数据量进行存储成了亟待解决的问题。

redis数据库是支持网络、可基于内存亦可持久化的日志型、键值对数据库,并提供多种语言的应用程序编程接口,存储性能和存储功能相对较强。

在相关技术中,通常采用键值对的方式对待存储数据进行存储,然而,随着数据在数量上的极速增长,可能导致造成因redis数据库中的存储空间的占用量增大,而导致redis数据库的存储空间的消耗急剧增加,影响redis数据库的存储性能的技术问题。

为了解决上述技术问题中的至少一种,本申请的发明人经过创造性地劳动,得到了本申请的发明构思:redis数据库包括多个存储空间,每一存储空间包括多个存储位置,基于存储位置对待存储数据进行存储。

下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。

请参阅图1,图1为本申请一个实施例的数据存储方法的示意图。

如图1所示,该方法包括:

S101:确定用于存储每一待存储数据对应的存储空间。

其中,各存储空间为远程字典服务redis数据库的组成单元。

示例性地,本实施例的执行主体可以为数据存储装置,且数据存储装置具体可以为服务器(如云端服务器,或者本地服务器),也可以为终端设备,也可以为处理器,也可以为芯片,等等,本实施例不做限定。

值得说明地是,在本实施例中,引入了redis数据库包括多个存储空间,数据存储装置为每一待存储数据确定对应的存储空间的特征,而通过该特征,数据存储装置可以基于确定出的存储空间对每一待存储数据进行存储,以便通过分存储空间存储,尽量压缩redis数据库的存储空间,从而实现对redis数据库的资源利用率的提高。

需要说明地是,本实施例对基于redis数据库确定多个存储空间的方法不做限定。例如,可以由数据存储装置基于需求、历史记录、以及试验等方法将redis数据库划分为多个存储空间。

在一些实施例中,基于redis数据库确定多个存储空间可以包括如下步骤:

步骤1:获取待存储数据量。

一个示例中,待存储数据量可以通过预估的方式获取。例如,存储数据量可以由数据存储装置基于待存储数据所对应的应用场景、以及待存储数据在应用场景中的业务实现预估。

例如,若本实施例提供的数据存储方法应用于信息推荐场景,且具体为针对用户的产品推荐,则待存储数据量可以由数据存储装置对用户的数量进行预估,并基于预估得到的结果确定待存储数据量。

另一个示例中,待存储数据量也可以通过相似推定的方式获取。例如,存储数据可以由数据存储装置基于与待存储数据相似的数据的数据量,相似推定得到待存储数据量。

应该理解地是,上述示例只是用于示范性地说明,本实施例可以采用的获取待存储数据量的方式,而不能理解为对本实施例的获取待存储数据量的方式地限定。

步骤2:根据待存储数据量和redis数据库的哈希(hash)结构的存储属性,将redis数据库划分为多个存储空间。

其中,存储属性可以包括内存属性。即,该步骤可以理解为:数据存储装置可以基于待存储数据量和存储属性,将redis数据库划分为多个存储空间。

在一些实施例中,内存属性为内存的大小,例如512M。

具体地,存储空间的数量=待存储数据量/512。

值得说明地是,在本实施例中,通过将内存的大小设置为512M,即基于512M将redis数据库划分为多个存储空间,可以在尽可能多的得到存储空间的数量的同时,保留哈希结构,使得redis数据库的数据存储性能保持较优的状态,从而实现数据存储的可靠性和有效性,提高存储资源的利用率的技术效果。

S102:在每一待存储数据对应的存储空间中,为每一待存储数据分配存储位置。

其中,每一存储空间包括多个存储位置。

也就是说,在本实施例中,redis数据库包括多个存储空间,每一存储空间包括多个存储位置,数据存储先从redis数据库中确定与每一待存储数据对应的存储空间,而后从确定的存储空间中确定与每一待存储数据对应的存储位置。

也即,在本实施例中,引入了redis数据库包括多个存储空间,每一存储空间包括多个存储位置,数据存储装置依次为每一待存储数据从redis数据库中分配存储空间,并分配存储位置的特征,以便基于该特征对每一待存储数据进行存储,而通过该特征,提高了数据存储的灵活性和多样性,且避免了直接对待存储数据存储至redis数据库造成的存储性能偏低,存储资源利用率偏低的问题,实现了提高存储资源利用率,节约存储资源的技术效果,且尤其当需要对存储的数据进行查询时,可以提高查询的效率、可靠性、以及有效性的技术效果。

S103:将每一待存储数据存储至为每一待存储数据分配的存储位置。

基于上述分析可知,本申请实施例提供了一种数据存储方法,包括:确定用于存储每一待存储数据对应的存储空间,其中,各存储空间为远程字典服务redis数据库的组成单元,在每一待存储数据对应的存储空间中,为每一待存储数据分配存储位置,并将每一待存储数据存储至为每一待存储数据分配的存储位置,其中,每一存储空间包括多个存储位置,在本实施例中,通过依次为待存储数据确定存储空间、以及存储空间中的存储位置,以便基于确定出的存储位置对待存储数据进行存储,提高了数据存储的灵活性和多样性,且实现了充分利用存储空间,提高存储资源利用率的技术效果。

请参阅图2,图2为本申请另一实施例的数据存储方法的示意图。

如图2所示,该方法包括:

S201:基于第一哈希算法将每一字符串序列转换为第一初始哈希值。

其中,每一待存储数据包括与设备标识对应的待存储数据,每一设备标识为字符串序列。

示例性地,针对信息推送、信息推荐、以及信息查询等场景,待存储数据可以为与设备标识对应的待存储数据,设备标识可以为用户设备对应的标识。

例如,设备标识可以为用于确认用户设备的位置的地址,具体可以为媒体存取控制位址(Media Access Control Address,MAC),也称为局域网地址(LAN Address),以太网地址(Ethernet Address)或物理地址(Physical Address)。

又如,设备标识可以为用户设备的通用唯一识别码(Universally UniqueIdentifier,UUID是)。

再如,若用户设备为安装有SIM(Subscriber Identity Module)卡的移动终端,则设备标识可以为经过加密后的SIM卡的卡号(如加密后的电话号码)。

该步骤可以理解为:如果设备标识为字符串序列,待存储数据为与设备标识对应的待存储数据,则数据存储装置可以基于第一哈希算法对字符串序列进行哈希计算,得到相应的哈希值(即第一初始哈希值)。

例如,在一些实施例中,第一哈希算法可以为循环冗余校验(Cyclic RedundancyCheck,CRC)32。

S202:根据第一初始哈希值确定每一待存储数据对应的存储空间。

值得说明地是,在本实施例中,通过第一哈希算法将字符串序列转换为第一初始哈希值,并基于第一初始哈希值确定存储空间,可以提高确定存储空间的效率和可靠性的技术效果。

在一些实施例中,每一存储空间包括序号属性,S202可以包括如下步骤:

步骤1:基于第一初始哈希值对多个存储空间的数量进行取余处理,得到用于存储每一待存储数据对应的序号属性。

基于上述分析可知,数据存储装置可以将redis数据库划分为多个存储空间,则数据存储装置继续为各存储空间分配序号属性,如分别为各存储空间分配一个序号,以便基于不同的序列对不同的存储空间进行区分。

示例性地,redis数据库的结构示意图可以参阅图3。

如图3所示,redis数据库可以包括多个(如图3中所示的N个)存储空间,且每一存储空间具有序号属性,如存储空间1中的1即为存储空间的序号属性,且具体序号为1。

在一些实施例中,步骤1可以包括如下子步骤:

子步骤1:对第一初始哈希值进行长整型转换处理,得到第一目标哈希值。

子步骤2:基于第一目标哈希值对多个存储空间的数量进行取余处理,得到用于存储每一待存储数据对应的序号属性。

也就是说,在本实施例中,引入了对第一初始哈希值进行长整型转换处理的特征,而通过长整型转换处理的特征,可以实现对第一初始哈希值的精简且准确地转换,从而提高确定序号属性的效率的技术效果。

步骤2:基于序号属性确定每一待存储数据对应的存储空间。

结合上述实施例,本实施例可以理解为:数据存储装置基于第一初始哈希值对N进行取余处理,得到的余数可以作为用于存储待存储数据的序号属性。

例如,若余数为2,即用于存储待存储数据的序号属性为2,则可以将存储空间2确定为用于存储待存储数据的存储空间。

值得说明地是,在本实施例中,通过基于第一哈希初始值对存储空间的数量取余,得到取余结果,并将取余结果确定为用于待存储数据对应的序号属性,以便基于序号属性确定用于存储待存储数据的存储空间,可以实现提高确定待存储数据的存储空间的灵活性和多样性的技术效果。

S203:基于第二哈希算法将每一字符串序列转换为第二初始哈希值。

其中,每一存储位置包括地址属性。

例如,第二哈希算法可以为bkdr算法。

应该理解地是,本实施例对第一哈希算法和第二哈希算法的具体内容不做限定,第一哈希算法和第二哈希算法为不同的算法即可,且关于具体算法的过程,可以参见相关技术中地描述,此处不再赘述。

S204:将第二初始哈希值确定为地址属性,并基于确定出的地址属性确定每一待存储数据在对应存储空间中的存储位置。

示例性地,关于地址属性地描述,可以参见上述实施例中关于序号属性地描述,且可以参见如图3中所示的存储位置1等。

需要说明地是,不同的存储空间之间的存储位置的地址属性可能相同,也可能不同。

例如,如图3所示,存储空间1和存储空间N中的存储位置的地址属性可能相同,如存储空间1中的存储地址1的地址属性为1,存储空间N中的存储地址的地址属性也为1。

然而,在另一些实施例中,存储空间1中的存储地址也的地址属性可能与存储空间N中的存储地址的地址属性不同。

例如,存储空间1中的存储地址的地址属性可以从1至X,而存储空间N中的存储地址的地址属性可以从Y至Z,且1至X与Y至Z之间,没有相同的地址属性。

同理,在本实施例中,通过基于第二哈希初始值确定地址属性,并基于地址属性确定用于存储待存储数据的存储位置,可以实现提高确定待存储数据的存储位置的灵活性和多样性的技术效果。

在一些实施例中,将第二初始哈希值确定为地址属性,包括:对第二初始哈希值进行长整型转换处理,得到第二目标哈希值,并将第二目标哈希值确定为地址属性。

同理,在本实施例中,引入了对第二初始哈希值进行长整型转换处理的特征,而通过长整型转换处理的特征,可以实现对第二初始哈希值的精简且准确地转换,从而提高确定地址属性的效率的技术效果。

S205:将每一待存储数据存储至为每一待存储数据分配的存储位置。

相应地,在数据存储装置依次为每一待存储数据确定存储空间、以及存储空间中的存储位置之后,可以将每一待存储数据存储至与其对应的存储位置,从而完成对每一待存储数据的存储。

S206:构建每一待存储数据的哈希类型的数据存储结构。

其中,哈希类型的数据存储结构中包括每一待存储数据及对应的存储空间的键值对,还包括每一待存储数据及对应的存储位置的键值对。

也就是说,数据存储结构包括两个键值对,且一个键值与另一个键值对关联。

具体地,待存储数据可以理解为键值对中的值,存储空间可以理解为键值对中的键,而待存储数据对应的值又可以理解为一个键值对,即待存储数据还是为该键值对中的值,而该键值对中的键可以理解为存储位置。

例如,键值对中的键(key)可以为存储空间,field可以为存储位置,值(value)为待存储数据。

且,基于上述分析可知,在本实施例中,存储空间具有序号属性,存储位置具有地址属性,若序号属性为17989,地址属性为1387983,待存储数据为12992423。

相应地,在本实施例中,数据存储结构为哈希存储结构,且key为17989,field为1387983,value为12992423。

而在相关技术中,采用键值对的方式对待存储进行存储时,若设备标识为E23EF2298D7FA0FA182EF2E948349D66,则数据存储结构中的key为E23EF2298D7FA0FA182EF2E948349D66,value为用户标识。

值得说明地是,在本实施例中,通过采用本实施例的方式对待存储数据进行存储的,得到如上所述的包括两层键值对结构的哈希存储结构,可以尽可能地压缩待存储数据的内存,从而提高存储资源的利用率的技术效果。

为使读者更加深刻地理解,本申请实施例基于上述方案与相关技术方案的区别,以及基于上述方案带来的技术效果,现结合实际测试进行示范性地说明:

待存储数据的数量为1千万个,存储空间的数量为25000个,每个存储空间约有300多个field-value键值对。

基于上述分析可知,通过采用不同的哈希算法(即第一哈希算法和第二哈希算法)确定的存储空间、以及存储位置中的存储位置,则可以基于key-field确定value,即发生连续碰撞概率极低,在此次实测过程中,实测的设备标识为50亿个加密后的手机号码,未发生明显碰撞。

对比图4(图4为采用相关技术的方案存储待存储数据时的redis数据库的内存占用情况的示意图)和图5(图5为采用本实施例的方案存储待存储数据时的redis数据库的内存占用情况的示意图)可知:

采用相关技术的方案对待存储数据进行存储,随着时间t的推移,当redis数据库中存储975万个待存储数据时,占用936.8M的内存。

而采用本实施例的方案对待存储数据进行存储,随着时间t的推移,存储975万个待存储数据,占用131M的内存,相比节省了85%左右的内存。

基于上述分析可知,本申请实施例对待存储数据不做限定。例如,待存储数据可以为用户标识,且当待存储数据为用户标识时,基于上述数据存储的方法存储的待存储数据可以应用于信息推送或者推荐等应用场景。

示例性地,信息推送可以为产品平台为用户推送与产品相关的信息,以便用户方便快捷地选择产品等。

请参阅图6,图6为本申请实施例的信息推送方法可以适用的应用场景示意图。

如图6所示,信息推送平台可以根据设备标识、加密后的手机号码、信息推送平台账号、以及邮箱等信息,获取存储于redis数据库中的用户标识。

值得说明地是,在相关技术中,是基于key-value的方式对用户标识进行存储,结合上述分析,可能造成redis数据库的存储性能偏低等问题,且当对用户标识进行查询时,也可能存在查询的准确性偏低,从而导致信息推送的可靠性偏低的问题。

为了解决信息推送的可靠性偏低的问题,可以基于上述发明构思存储的用户标识为用户推送信息。

请参阅图7,图7为本申请实施例的信息推送方法的示意图。

如图7所示,该方法包括:

S701:确定待推荐用户的设备标识和待推送信息。

示例性地,本实施例的执行主体可以为信息推送装置,且信息推荐装置可以为服务器(如云端服务器,或者本地服务器),也可以为终端设备,也可以为处理器,也可以为芯片,等等,本实施例不做限定。

值得说明地是,本实施例的执行主体可以为与数据存储装置相同的装置,也可以为不同的装置,本实施例不做限定。

其中,关于设备标识地阐述,可以参见上述实施例,此处不再赘述。

待推送信息可以为信息推送装置随机或者基于时间间隔确定的任意信息,也可以为信息推送装置基于用户的历史记录(如浏览记录等)确定的信息,本实施例不做限定。

S702:基于设备标识从远程字典服务redis数据库中获取与设备标识对应的用户标识,并根据用户标识推送待推送信息。

其中,用户标识是基于上述任一实施例所述的数据存储方法存储的待存储数据,如用户标识为基于图1或者图2所示的实施例所存储的待存储数据。

在一些实施例中,S702可以包括:根据设备标识依次确定用于存储用户标识的存储空间和存储位置,并从存储位置中读取用户标识。

其中,关于确定存储空间和存储位置的方法可以参见上述实施例地描述,此处不再赘述。

值得说明地是,在本实施例中,通过基于设备标识从redis数据库中获取,基于如图1或者如图2所示的数据存储方法存储的用户标识,可以实现获取用户标识的可靠性和准确性,进而实现信息推送的准确性和可靠性的技术效果。

根据本申请实施例的另一个方面,本申请实施例提供了一种数据存储装置。

请参阅图8,图8为本申请一个实施例的数据存储装置的示意图。

如图8所示,数据存储装置800包括:

第一确定单元801,用于确定用于存储每一待存储数据对应的存储空间,其中,各存储空间为远程字典服务redis数据库的组成单元。

分配单元802,用于在每一所述待存储数据对应的存储空间中,为每一所述待存储数据分配存储位置。

存储单元803,用于将每一所述待存储数据存储至为每一所述待存储数据分配的存储位置,其中,每一存储空间包括多个存储位置。

请参阅图9,图9为本申请另一实施例的数据存储装置的示意图。

如图9所示,数据存储装置900包括:

第一确定单元901,用于确定用于存储每一待存储数据对应的存储空间,其中,各存储空间为远程字典服务redis数据库的组成单元。

在一些实施例中,每一所述待存储数据包括与设备标识对应的待存储数据,每一所述设备标识为字符串序列;所述第一确定单元901包括:

第一转换子单元9011,用于基于第一哈希算法将每一字符串序列转换为第一初始哈希值。

第一确定子单元9012,用于根据所述第一初始哈希值确定每一所述待存储数据对应的存储空间。

在一些实施例中,每一所述存储空间包括序号属性;所述第一确定子单元9012包括:

取余模块,用于基于所述第一初始哈希值对多个所述存储空间的数量进行取余处理,得到用于存储每一所述待存储数据对应的序号属性;

确定模块,用于基于序号属性确定每一所述待存储数据对应的存储空间。

在一些实施例中,所述取余模块包括:

转换子模块,用于对所述第一初始哈希值进行长整型转换处理,得到第一目标哈希值;

取余子模块,用于基于所述第一目标哈希值对多个所述存储空间的数量进行取余处理,得到用于存储每一所述待存储数据对应的序号属性。

分配单元902,用于在每一所述待存储数据对应的存储空间中,为每一所述待存储数据分配存储位置。

在一些实施例中,每一所述存储位置包括地址属性,每一所述待存储数据对应设备标识,每一所述设备标识为字符串序列;所述分配单元902包括:

第二转换子单元9021,用于基于第二哈希算法将每一字符串序列转换为第二初始哈希值;

第二确定子单元9022,用于将所述第二初始哈希值确定为地址属性,并基于确定出的地址属性确定每一所述待存储数据在对应存储空间中的存储位置。

在一些实施例中,所述第二确定子单元9022用于,对所述第二初始哈希值进行长整型转换处理,得到第二目标哈希值,并将所述第二目标哈希值确定为地址属性。

存储单元903,用于将每一所述待存储数据存储至为每一所述待存储数据分配的存储位置,其中,每一存储空间包括多个存储位置。

构建单元904,用于构建每一所述待存储数据的哈希类型的数据存储结构,其中,哈希类型的数据存储结构中包括每一所述待存储数据及对应的存储空间的键值对,还包括每一待存储数据及对应的存储位置的键值对。

根据本申请实施例的另一个方面,本申请实施例提供了一种信息推送装置。

请参阅图10,图10为本申请实施例的信息推送装置的示意图。

如图10所示,信息推送装置1000包括:

第二确定单元1001,用于确定待推荐用户的设备标识和待推送信息。

获取单元1002,用于基于所述设备标识从远程字典服务redis数据库中获取与所述设备标识对应的用户标识。

推送单元1003,用于根据所述用户标识推送所述待推送信息,其中,所述用户标识是基于第一方面所述的方法存储的待存储数据。

在一些实施例中,所述获取单元1002用于,根据所述设备标识依次确定用于存储所述用户标识的存储空间和存储位置,并从所述存储位置中读取所述用户标识。

根据本申请的实施例,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如上任一实施例所述的数据存储方法;或者,所述计算机执行指令被处理器执行时用于实现如上任一实施例所述的信息推送方法。

根据本申请的实施例,本申请还提供了一种计算机程序产品,程序产品包括:计算机程序,计算机程序存储在可读存储介质中,电子设备的至少一个处理器可以从可读存储介质读取计算机程序,至少一个处理器执行计算机程序使得电子设备执行上述任一实施例提供的方案,如上任一实施例所述的数据存储方法;或者,如上任一实施例所述的信息推送方法。

根据本申请的实施例,本申请还提供了一种电子设备和一种可读存储介质。

如图11所示,是根据本申请实施例的电子设备的框图。

电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本申请的实现。

如图11所示,该电子设备1100包括:一个或多个处理器1101、存储器1102,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在电子设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示GUI的图形信息的指令。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器一起使用。同样,可以连接多个电子设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图11中以一个处理器1101为例。

存储器1102即为本申请所提供的非瞬时计算机可读存储介质。其中,所述存储器存储有可由至少一个处理器执行的指令,以使所述至少一个处理器执行本申请所提供的数据存储方法或者信息推送方法。本申请的非瞬时计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行本申请所提供的数据存储方法或者信息推送方法。

存储器1102作为一种非瞬时计算机可读存储介质,可用于存储非瞬时软件程序、非瞬时计算机可执行程序以及模块,如本申请实施例中的数据存储方法或者信息推送方法对应的程序指令/单元。处理器1101通过运行存储在存储器1102中的非瞬时软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中的数据存储方法或者信息推送方法。

存储器1102可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据电子设备的使用所创建的数据等。此外,存储器1102可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些实施例中,存储器1102可选包括相对于处理器1101远程设置的存储器,这些远程存储器可以通过网络连接至电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

电子设备还可以包括:输入装置1103和输出装置1104。处理器1101、存储器1102、输入装置1103和输出装置1104可以通过总线或者其他方式连接,图11中以通过总线连接为例。

输入装置1103可接收输入的数字或字符信息,以及产生与电子设备的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等输入装置。输出装置1104可以包括显示设备、辅助照明装置(例如,LED)和触觉反馈装置(例如,振动电机)等。该显示设备可以包括但不限于,液晶显示器(LCD)、发光二极管(LED)显示器和等离子体显示器。在一些实施方式中,显示设备可以是触摸屏。

此处描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、专用ASIC(专用集成电路)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。

这些计算机程序(也称作程序、软件、软件应用、或者代码)包括可编程处理器的机器指令,并且可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算机程序。如本文使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(PLD)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。

为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。

可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、区块链服务网络(Block-chain-based Service Network,BSN)、广域网(WAN)和互联网。

计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与虚拟专用服务器(VPS,Virtual Private Server)服务中,存在的管理难度大,业务扩展性弱的缺陷。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求书指出。

应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求书来限制。

相关技术
  • 数据存储方法、信息推送方法以及装置
  • 基于流数据处理的信息推送方法、信息推送装置及服务器
技术分类

06120113066838