信息存储方法、装置、服务器及介质
文献发布时间:2023-06-19 09:26:02
技术领域
本发明属于数据存储技术领域,尤其涉及一种信息存储方法、装置、服务器及介质。
背景技术
随着电子设备的普及,许多应用场景下,均需要每隔一段时间即获取电子设备的设备信息,来对电子设备或电子设备上登录的用户账号进行分析、统计以及管理等,例如推荐系统中则需要根据设备信息来周期性的更新该电子设备对应的推荐内容,购物系统中需要根据设备信息来判断当前申请购物券的账号是否为重复申请等。
在上述过程中,所获取的设备信息由于对实时性具有一定的要求,因此,设备信息会首先存储在Redis缓存中,之后再根据缓存中的设备信息进行后续的处理。
这种情况下,由于一个缓存需要存储大量电子设备的设备信息,使缓存具有很大的存储压力,且容易出现缓存空间不够的情况。
因此,如何提供一种降低存储压力的信息存储方法是业界所要解决的问题。
发明内容
本发明实施例提供了一种信息存储方法、装置、服务器及介质,能够降低缓存在存储设备信息时的存储压力。
第一方面,本发明实施例提供一种信息存储方法,包括:
获取第i次采集到的第一设备的第一设备信息;1≤i≤N,N为缓存中保存的每个多维有序向量对应的预设采集次数;i和N均为正整数;
将所述第一设备信息与所述多维有序向量中的基准信息进行比较,提取所述第一设备信息中与所述基准信息不同的目标关键值信息;其中,所述多维有序向量与所述第一设备对应;
将所述目标关键值信息保存至所述多维有序向量中所述目标关键值信息对应的目标维度中。
第二方面,本发明实施例提供了一种信息存储装置,包括:
信息获取模块,用于获取第i次采集到的第一设备的第一设备信息;1≤i≤N,N为缓存中保存的每个多维有序向量对应的预设采集次数;i和N均为正整数;
信息提取模块,用于将所述第一设备信息与多维有序向量中的基准信息进行比较,提取所述第一设备信息中与所述基准信息不同的目标关键值信息;其中,所述多维有序向量与所述第一设备对应;
第一保存模块,用于将所述目标关键值信息保存至所述多维有序向量中所述目标关键值信息对应的目标维度中。
第三方面,本发明实施例提供一种服务器,所述服务器包括:处理器以及存储有计算机程序指令的存储器;
所述处理器执行所述计算机程序指令时实现如第一方面所述的信息存储方法。
第四方面,本发明实施例提供一种计算机存储介质,所述计算机存储介质上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现如第一方面所述的信息存储方法。
本发明实施例的方法,在获取第i次采集到的第一设备的第一设备信息后,会将第一设备信息与多维有序向量中设置的基准信息进行比较,之后基于比较结果,提取出第一设备信息中与基准信息不同的目标关键字信息,并将目标关键字信息保存至多维有序向量的目标维度中,该多维有序向量保存于后台服务器对应的缓存中。这种情况下,使得多维有序向量中,不会重复存储与基准信息相同的信息,从而减少了缓存中的重复信息,减少了设备信息对缓存空间的占用,从而降低了缓存的存储压力,提高缓存中的存储效率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单的介绍,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一个实施例提供的信息存储方法的流程示意图;
图2是本发明另一个实施例提供的信息存储方法的流程示意图;
图3是本发明一个实施例提供的信息存储装置的结构示意图;
图4是本发明一个实施例提供的服务器的结构示意图。
具体实施方式
下面将详细描述本发明的各个方面的特征和示例性实施例,为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及具体实施例,对本发明进行进一步详细描述。应理解,此处所描述的具体实施例仅被配置为解释本发明,并不被配置为限定本发明。对于本领域技术人员来说,本发明可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本发明的示例来提供对本发明更好的理解。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
如背景技术所述,目前后台服务器会周期性获取自身负责的多台设备的设备信息,并将设备信息存储至缓存,导致缓存需要存储的信息量非常大,存储压力大。
为了解决现有技术问题,本发明实施例提供了一种信息存储方法、装置、服务器及介质。下面首先对本发明实施例所提供的信息存储方法进行介绍。参见图1,图1示出了本发明一个实施例提供的信息存储方法的流程示意图。该方法可以应用于服务器。
S110,获取第i次采集到的第一设备的第一设备信息;1≤i≤N,N为缓存中保存的每个多维有序向量对应的预设采集次数;i和N均为正整数。
每个多维有序向量中能够保存N次采集的N个第一设备信息的目标关键值信息,例如N等于5。即本申请实施例会在N个不同的时间内采集第一设备的第一设备信息,其中,每连续N次采集的N个第一设备信息的目标关键值信息会保存至一个多维有序向量内。
S120,将第一设备信息与多维有序向量中的基准信息进行比较,提取第一设备信息中与基准信息不同的目标关键值信息;其中,多维有序向量与第一设备对应。
由于针对同一个多维有序向量的N个第一设备信息针对于同一个设备,且N个第一设备信息均是针对同一组采集项进行采集的,即N个第一设备信息中包含的信息内容的类型是相同的,例如N个第一设备信息均包含设备标识、归属地等信息,因此导致这N个第一设备信息非常相似,存在许多的重复信息,这些重复信息会浪费缓存的存储空间。
因此,本实施例在多维有序向量中设置了一个基准信息,仅将第一设备信息中与基准信息不同的部分信息进行保存,即将各个第一设备信息中与基准信息不同的变化量进行保存,从而避免了多维有序向量中存储有较多重复信息的情况。并且这种情况下,将N个目标关键值信息与基准信息求和,即能够得到N个第一设备信息,因此这种方式也不会造成原始设备信息的丢失。
S130,将目标关键值信息保存至多维有序向量中目标关键值信息对应的目标维度中。
多维有序向量包括多个维度的向量值,为了保证向量的顺序性,会按照采集第一设备信息的时间顺序,依次将得到的目标关键值信息顺序填充至对应的目标维度内,例如多维有序向量中包括4个用于存储目标关键值信息的维度{D1,D2,D3,D4},则后续将4次采集到的第一设备信息对应的目标关键值信息,依据D1-D2-D3-D4的顺序,依次存储至对应的维度内。其中,由于上述多维有序向量是有序的,因此需要采用Redis中的有序集合zset的结构进行存储。
其中,在得到目标关键值信息后,为了将目标关键值信息保存至多维有序向量中的目标维度中,目标关键值信息会转换为向量的格式,因此,本实施例中将第一设备信息与基准信息比对,提取目标关键值信息保存至目标维度的操作,可以称为向量化操作。
上述向量化操作,由单个zset存储改为string类型存储基础设备信息(即基准信息)+zset存储变化量(即目标关键值信息)的方式,将zset的值变小,取得信息压缩的同时,使redis的结构优化收益可观。
其中,还可以限制多维有序向量中,N条目标关键值信息的平均长度为1K。当然,也可以不限定N条目标关键值信息的平均长度,本发明对此不作限定。
本发明实施例的方法,在获取第i次采集到的第一设备的第一设备信息后,会将第一设备信息与多维有序向量中设置的基准信息进行比较,之后基于比较结果,提取出第一设备信息中与基准信息不同的目标关键字信息,并将目标关键字信息保存至多维有序向量的目标维度中,该多维有序向量保存于后台服务器对应的缓存中。这种情况下,使得多维有序向量中,不会重复存储与基准信息相同的信息,从而减少了缓存中的重复信息,减少了设备信息对缓存空间的占用,从而降低了缓存的存储压力,提高缓存中的存储效率。
可选地,上述第一设备信息可以包括多个采集项信息以及与各个采集项信息一一对应多个第一关键值信息。这里的采集项信息指的是需要对第一设备进行采集的采集对象,例如归属地、用户账号等,第一关键值信息指的是采集项所对应的采集内容,例如归属地对应的第一关键值信息为:中国,用户账号对应的第一关键值信息为:135XXXXXXXX等。第一设备信息中包含采集项信息及其对应的第一关键值信息,能够方便确认每个第一关键值信息的定义,从而方便了后续的信息比对,避免出现信息比对错位的情况。
其中,由于采集项信息与第一关键值信息为一一对应的关系,因此采集项信息与第一关键值信可以采用JSON中的键值对(k-v)存储结构进行存储。其中,采集项信息为key,第一关键值信息为value。此外,第一设备信息需要是能够拆分为C个域的信息,这种情况下,第一设备信息才能够采用k-v的格式进行设置。
由于对于同一个系统来说,其获取设备信息的目的是相同的,因此这种情况下,该系统获取的全部设备信息中的采集项信息应该是都是相同的。这就导致在基准信息不包括采集项信息的情况下,每个目标关键值信息中具包含同一套采集项信息,即缓存中会重复存储采集项信息。
为了避免上述情况,可选地,上述第一设备信息也可以包括按照预设顺序排序的多个第一关键值信息;各个第一关键值信息与第一设备对应的各个采集项信息一一对应。
本实施例中,去掉了第一设备信息的JSON属性,并预先设置了预设顺序,该预设顺序中的不同位置分别对应各个采集项信息。后续通过将第一关键值信息按照预设顺序进行排序,即能够方便后续服务器根据排序顺序确定各个排序位置处的第一关键值信息对应的采集项信息。这种方式下,是的在基准信息不包括采集项信息的情况下,提取到的目标关键值信息中也不会包含采集项信息,从而避免了缓存中重复存储采集项信息的情况,进一步提高了缓存的存储效率。此外,为了方便服务器区分各个排序位置,在第一属性信息中各个第一关键值信息之间可以使用分隔符“\”进行划分。
可选地,上述采集项信息可以包括以下至少一项:基带版本、归属地、日期、网络协议、设备类型、设备版本、国际移动设备识别码、国际移动用户识别码、操作语言、移动服务提供商、操作系统类型、操作系统版本、屏幕分辨率、屏幕尺寸、序列号、服务集标识、时区。
这里的采集项信息决定了第一设备信息所包含的信息内容,因此,除了用于表示设备身份的国际移动设备识别码等标识之外,采集项信息主要基于服务器获取设备信息后的需求进行设定。例如,若服务器利用第一设备信息进行设备身份识别,则第一设备信息内可以主要包含设备特征信息,例如设备类型、设备版本、屏幕分辨率、屏幕尺寸等;若服务器利用第一设备信息进行信息推荐,则第一设备信息可以包括浏览记录、已安装的应用程序等。本发明并不限定采集项信息的具体内容和数量。
在一些实施例中,上述多维有序向量可以包括M个维度,M=N+2;多维有序向量中的两个维度预先存储有基准信息以及第一设备的设备标识。
在本实施例中,假设N=4,则多维有序向量的结构为{K1,Vbase,D1,D2,D3,D4},其中K1为存储设备标识的维度,Vbase为存储基准信息的维度,D1~D4为存储目标关键值信息的维度。这种情况下,基准信息为预先设定的信息,用户可以根据第一设备的的特征以及用户账号的情况进行设置,基准信息设置的自由度更高,用户可以根据获取设备信息的目的,来调整基准信息的内容,并且能够尽可能避免多维有序向量中存在重复信息。
在另一些实施例中,上述多维有序向量可以包括M个维度,M=N+1;多维有序向量中的一个维度预先存储有第一设备的设备标识;
在i=1的情况下,将第一设备信息作为基准信息,并将基准信息保存至多维有序向量中基准信息对应的维度中。
本实施例中,假设N=4,则多维有序向量的结构为{K1,Vbase,D1,D2,D3},其中,将第一次采集的第一设备信息作为该多维有序向量的基准信息。这种方式下,基准信息不需要用户进行单独设置,而是直接利用所采集的设备信息即可,简化了用户的操作。其中,第1次采集的第一设备信息作为基准信息时,基准信息与其他第一设备信息之间的差异信息的长度为D[N-1],D[N-1]可以限定为<128,其中,任一采集项对应的信息内容不同即可将第一设备的整体长度作为D[N-1]。
由于目前redis所使用的底层数据编码类型存在优化空间,基于此,在其他一些实施例中,S120之后,S130之前,该方法还可以包括:
对目标关键值信息中满足预设编码条件的第一字段信息进行压缩编码,得到编码后的目标关键值信息;
上述S130可以包括:
将编码后的目标关键值信息保存至多维有序向量中的目标维度中。
本实施例中,将目标关键值信息中,满足预设编码条件的第一字段信息进行了压缩编码,从而从编码类型的方向上,压缩了目标关键值信息的数据大小,从而进一步降低了目标关键值信息对存储空间的占用。
可选地,压缩编码为霍夫曼编码,上述预设编码条件可以包括:
字段信息具有对应的取值范围,且字段信息基于设备属性的概率分布的稳定性满足预设稳定条件。
在计算机数据处理中,霍夫曼编码使用变长编码表对源符号(如文件中的一个字母)进行编码,其中变长编码表是通过一种评估来源符号出现机率的方法得到的,出现机率高的字母使用较短的编码,反之出现机率低的则使用较长的编码,这便使编码之后的字符串的平均长度、期望值降低,从而达到无损压缩数据的目的。霍夫曼编码针对取值空间有限的字段且该字段基于设备属性的概率分布需要满足大体稳定的条件,针对满足以上两个条件的字段信息进行霍夫曼编码,取得逼近理论的最短编码长度(信息熵大小),从而实现压缩字段信息的目的。
此外,该方法还可以对基准信息中满足上述预设编码条件的字段信息进行压缩编码,从而减少基准信息的存储大小。
可选的,上述压缩编码方式可以包括:对目标关键值信息中,类型有限的列进行压缩编码。例如,这里以“时区”对应的一列进行介绍,本例中有两种GMT+09:00和GMT+08:00,压缩编码方式可以利用信息熵公式进行计算;故在字符串中只需要一个char即可,例如,编码时区东八区为64,对应ASCII码表A,东九区为65,对应码表为B,编码后的信息仅占1字节,相较于编码前需要占用的9字节,节约了8字节;若使用二进制编码方式,则该列信息可以由9字节的72bit缩减为5bit。
对于本例目标关键值信息:
',40:31:3c:1e:40:6d,101.228.28.99,,,,,,,,,,,,,,,,,,,,,,"Xiaomi_406C",GMT+09:00,,,'
进行压缩编码后得到:
',40:31:3c:1e:40:6d,101.228.28.99,,,,,,,,,,,,,,,,,,,,,,"Xiaomi_406C",B,,,'
本实施例中进行压缩编码,是为了获得更小的目标关键值信息长度,更小的目标关键值信息长度可以取得更大的压缩比率,进一步降低对缓存空间的占用,也可以减小对读写性能的影响,对于多维有序向量中类型有限的列都可以做这样的压缩编码操作。压缩编码方式具体如何使用要以最终的业务场景对读写性能的要求而取舍。
当然,在其他实施例中,也可以采用其他类型的压缩编码。
由于当前存储同一个设备的多条设备信息时,本身结构采用json存储,且需要有序性及集合set的不重复属性,故选用redis的有序集合(zset)作为存储结构,针对redis的zset结构,设备对应的采集项会比较多,导致设备信息中的值value长度较大,在1-2k之间,基于此,为了避免较长的设备信息对读写性能的影响,目前redis的底层存储结构使用的是跳表(skiplist)的结构,但是这种结构会对缓存空间造成较大的占用。
基于此,在本发明再一些实施例中,上述S130可以包括:
采用压缩表的结构,将目标关键值信息保存至多维有序向量中的目标维度中。
由于本发明的前述实施例中,通过与基准信息比较以及提取目标关键值信息,从而减小了目标关键值信息的长度,这种情况下,采用压缩表(ziplist)的结构进行存储,即能够尽可能避免压缩表中字段长度过长所造成的的读写性能下降严重的情况,从而使得在降低缓存空间压力的同时,也能够尽可能保证读写性能的实时性。
为了在存储优化的同时,也能够尽可能保证读写性能的实时性的,本实施例在对第一设备信息进行信息缩减后,再利用压缩表对得到的目标关键值信息进行存储,而想要避免压缩表的结构对读写性能造成影响,则需要保证被压缩的字段信息的长度小于L,其中zset-max-ziplist-value=L。但是由于目标关键值信息中,无法保证全部的字段信息均小于L,例如部分采集项对应的信息较长的情况,则这部分字段信息若采用压缩表的结构进行存储的话,则可能会对读写性能造成影响。
基于此,在本发明又一些实施例中,上述S130可以包括:
确定目标关键值信息中,字段信息的长度小于或等于预设长度参数L的第二字段信息占目标关键值信息的比例;
在比例达到预设比例的情况下,采用压缩表的结构将第二字段信息保存至多维有序向量中的目标维度中,并采用跳表的结构将目标关键字信息中除第二字段信息之外的第三字段信息保存至多维有序向量中的目标维度中。
在比例未达到预设比例的情况下,采用跳表的结构将目标关键字信息保存至多维有序向量中的目标维度中。
本实施例中,首先确定了目标关键值信息中,哪些字段信息的长度小于或等于L,之后将这些字段信息占目标关键值信息的比例与预设比例进行比较,例如预设比例可以为99.9%,在比例达到预设比例的情况下,表明此时目标关键值信息中大部分字段信息以及满足采用压缩表结构的条件了,因此,可以将这部分字段信息转换为压缩表,而剩余少部分长度大于L的字段信息,则可以采用跳表继续保存。
这种情况下,通过修改L的值,即能够将绝大部分字段信息的存储结构,从跳表变为压缩表,通过压缩表的结构来实现较好的存储结构收益,并且,由于字段信息的长度不大于L,也能够保证读写的实时性,避免较长的字段信息采用压缩表存储时对读写性能的影响。而在比例未达到预设比例的情况下,表明此时目标关键值信息中包括较多的字段信息的长度不符合压缩表的要求,因此,这种情况下,可以直接采用跳表进行存储,从而优先保证读写性能不受影响。其中,L可以取128以下的数值。
在另一些实施例中,上述S130可以包括:
确定目标关键值信息中,字段信息的长度小于或等于预设长度参数L的第二字段信息;
采用压缩表的结构将第二字段信息保存至多维有序向量中的目标维度中,并采用跳表的结构将目标关键字信息中除第二字段信息之外的第三字段信息保存至多维有序向量中的目标维度中。
本实施例中,通过字段信息的长度是否大于L,来将目标关键值信息划分为第二字段信息和第三字段信息,之后对于长度不大于L的第二字段信息通过压缩表的结构存储,对长度大于L的第三字段信息通过跳表的结构存储。这种方式下,能够保证在对redis的存储效率进行优化的同时尽量减小对读写操作实时性的影响。
由于多维有序向量中存储的相似设备信息的数量N,决定了读写效率下降的程度,对于跳表编码,读写的复杂度为O(logN),而压缩表编码中,读平均复杂度为o(N^2),写平均复杂度为o(N)。因此,为了降低压缩表编码的读写复杂度,满足业务的实时性需求,N应该设置为较小的值,可选地,N为小于10的正整数。当然,以上仅为一种具体实现方式,本发明不限定N的具体数值以及取值范围。
基于前述实施例,本申请还提供了另一种信息存储方法,参见图2,图2是本发明另一个实施例提供的信息存储方法的流程示意图。该方法包括:
S210,获取第i次采集到的第一设备的第一设备信息;第一设备信息包括按照预设顺序排序的多个第一关键值信息。
S220,将第一设备信息与多维有序向量中的基准信息进行比较,提取第一设备信息中与基准信息不同的目标关键值信息。
S230,对目标关键值信息中满足预设编码条件的第一字段信息进行压缩编码,得到编码后的目标关键值信息。
S240,确定编码后的目标关键值信息中,字段信息的长度小于或等于预设长度参数L的第二字段信息占目标关键值信息的比例。
S250,在比例达到预设比例的情况下,采用压缩表的结构将第二字段信息保存至多维有序向量中的目标维度中,并采用跳表的结构将目标关键字信息中除第二字段信息之外的第三字段信息保存至多维有序向量中的目标维度中。
本实施例中,为了兼顾存储优化及减小读写实时性的目的,首先对相似的设备信息进行向量化,得到去除重复信息后的目标关键值信息;然后对目标关键值信息进行编码压缩,再次减小目标关键值信息的数据大小,将目标关键值信息中的大多数字段信息的长度控制在L以下;之后对编码后的目标关键值信息进行存储结构优化,利用ziplist替换skiplist对长度在L之下的字段信息进行存储,使得在得到redis的存储空间优化的同时尽量减小对读写操作实时性的影响。
基于与前述方法实施例相同的发明构思,下面首先对本发明实施例所提供的信息存储装置进行介绍。参见图3,图3示出了本发明一个实施例提供的信息存储装置的结构示意图;该装置包括:
信息获取模块310,用于获取第i次采集到的第一设备的第一设备信息;1≤i≤N,N为缓存中保存的每个多维有序向量对应的预设采集次数;i和N均为正整数;
信息提取模块320,用于将第一设备信息与多维有序向量中的基准信息进行比较,提取第一设备信息中与基准信息不同的目标关键值信息;其中,多维有序向量与第一设备对应;
第一保存模块330,用于将目标关键值信息保存至多维有序向量中目标关键值信息对应的目标维度中。
本发明实施例的方法,在获取第i次采集到的第一设备的第一设备信息后,会将第一设备信息与多维有序向量中设置的基准信息进行比较,之后基于比较结果,提取出第一设备信息中与基准信息不同的目标关键字信息,并将目标关键字信息保存至多维有序向量的目标维度中,该多维有序向量保存于后台服务器对应的缓存中。这种情况下,使得多维有序向量中,不会重复存储与基准信息相同的信息,从而减少了缓存中的重复信息,减少了设备信息对缓存空间的占用,从而降低了缓存的存储压力,提高缓存中的存储效率。
在一些实施例中,该装置还可以包括:
编码模块,用于对所述目标关键值信息中满足预设编码条件的第一字段信息进行压缩编码,得到编码后的所述目标关键值信息;
第一保存模块330可以用于:将编码后的所述目标关键值信息保存至所述多维有序向量中的所述目标维度中。
本实施例中,将目标关键值信息中,满足预设编码条件的第一字段信息进行了压缩编码,从而从编码类型的方向上,压缩了目标关键值信息的数据大小,从而进一步降低了目标关键值信息对存储空间的占用。
在另一些实施例中,上述第一保存模块330可以用于:
采用压缩表的结构,将所述目标关键值信息保存至所述多维有序向量中的所述目标维度中。
由于本发明的前述实施例中,通过与基准信息比较以及提取目标关键值信息,从而减小了目标关键值信息的长度,这种情况下,采用压缩表(ziplist)的结构进行存储,即能够尽可能避免压缩表中字段长度过长所造成的的读写性能下降严重的情况,从而使得在降低缓存空间压力的同时,也能够尽可能保证读写性能的实时性。
在再一些实施例中,上述第一保存模块330可以包括:
比例确定单元,用于确定所述目标关键值信息中,字段信息的长度小于或等于预设长度参数L的第二字段信息占所述目标关键值信息的比例;
第一保存单元,用于在所述比例达到预设比例的情况下,采用压缩表的结构将所述第二字段信息保存至所述多维有序向量中的所述目标维度中,并采用跳表的结构将所述目标关键字信息中除所述第二字段信息之外的第三字段信息保存至所述多维有序向量中的所述目标维度中。
本实施例中,首先确定了目标关键值信息中,哪些字段信息的长度小于或等于L,之后将这些字段信息占目标关键值信息的比例与预设比例进行比较,例如预设比例可以为99.9%,在比例达到预设比例的情况下,表明此时目标关键值信息中大部分字段信息以及满足采用压缩表结构的条件了,因此,可以将这部分字段信息转换为压缩表,而剩余少部分长度大于L的字段信息,则可以采用跳表继续保存。
这种情况下,通过修改L的值,即能够将绝大部分字段信息的存储结构,从跳表变为压缩表,通过压缩表的结构来实现较好的存储结构收益,并且,由于字段信息的长度不大于L,也能够保证读写的实时性,避免较长的字段信息采用压缩表存储时对读写性能的影响。而在比例未达到预设比例的情况下,表明此时目标关键值信息中包括较多的字段信息的长度不符合压缩表的要求,因此,这种情况下,可以直接采用跳表进行存储,从而优先保证读写性能不受影响。
在又一些实施例中,上述第一保存模块330可以包括:
字段确定单元,用于确定目标关键值信息中,字段信息的长度小于或等于预设长度参数L的第二字段信息;
第二保存单元,用于采用压缩表的结构将第二字段信息保存至多维有序向量中的目标维度中,并采用跳表的结构将目标关键字信息中除第二字段信息之外的第三字段信息保存至多维有序向量中的目标维度中。
本实施例中,通过字段信息的长度是否大于L,来将目标关键值信息划分为第二字段信息和第三字段信息,之后对于长度不大于L的第二字段信息通过压缩表的结构存储,对长度大于L的第三字段信息通过跳表的结构存储。这种方式下,能够保证在对redis的存储效率进行优化的同时尽量减小对读写操作实时性的影响。
本发明实施例提供的信息存储装置能够实现图1-2的方法实施例中实现的各个过程,为避免重复,这里不再赘述。
本发明实施例还提供了一种服务器,参见图4,图4是本发明一个实施例提供的服务器的结构示意图。
上述服务器可以包括处理器401以及存储有计算机程序指令的存储器402。处理器401通过读取并执行存储器402中存储的计算机程序指令,以实现上述实施例中的任意一种信息存储方法。
具体地,上述处理器401可以包括中央处理器(CPU),或者特定集成电路(Application Specific Integrated Circuit,ASIC),或者可以被配置成实施本发明实施例的一个或多个集成电路。
存储器402可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器402可包括硬盘驱动器(Hard Disk Drive,HDD)、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(Universal Serial Bus,USB)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器402可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器402可在综合网关容灾设备的内部或外部。在特定实施例中,存储器402是非易失性固态存储器。在特定实施例中,存储器402包括只读存储器(ROM)。在合适的情况下,该ROM可以是掩模编程的ROM、可编程ROM(PROM)、可擦除PROM(EPROM)、电可擦除PROM(EEPROM)、电可改写ROM(EAROM)或闪存或者两个或更多个以上这些的组合。
在一个示例中,服务器还可包括通信接口403和总线410。其中,如图4所示,处理器401、存储器402、通信接口403通过总线410连接并完成相互间的通信。
通信接口403,主要用于实现本发明实施例中各模块、装置、单元和/或设备之间的通信。
总线410包括硬件、软件或两者,将在线数据流量计费设备的部件彼此耦接在一起。举例来说而非限制,总线可包括加速图形端口(AGP)或其他图形总线、增强工业标准架构(EISA)总线、前端总线(FSB)、超传输(HT)互连、工业标准架构(ISA)总线、无限带宽互连、低引脚数(LPC)总线、存储器总线、微信道架构(MCA)总线、外围组件互连(PCI)总线、PCI-Express(PCI-X)总线、串行高级技术附件(SATA)总线、视频电子标准协会局部(VLB)总线或其他合适的总线或者两个或更多个以上这些的组合。在合适的情况下,总线410可包括一个或多个总线。尽管本发明实施例描述和示出了特定的总线,但本发明考虑任何合适的总线或互连。
另外,结合上述实施例中的信息存储方法,本发明实施例可提供一种计算机存储介质来实现。该计算机存储介质上存储有计算机程序指令;该计算机程序指令被处理器执行时实现上述实施例中的任意一种信息存储方法。
以上所述的结构框图中所示的功能块可以实现为硬件、软件、固件或者它们的组合。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(ASIC)、适当的固件、插件、功能卡等等。当以软件方式实现时,本发明的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。“机器可读介质”可以包括能够存储或传输信息的任何介质。机器可读介质的例子包括电子电路、半导体存储器设备、ROM、闪存、可擦除ROM(EROM)、软盘、CD-ROM、光盘、硬盘、光纤介质、射频(RF)链路,等等。代码段可以经由诸如因特网、内联网等的计算机网络被下载。
上面参考根据本发明的实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各方面。应当理解,流程图和/或框图中的每个方框以及流程图和/或框图中各方框的组合可以由计算机程序指令实现。这些计算机程序指令可被提供给通用计算机、专用计算机、或其它可编程数据处理装置的处理器,以产生一种机器,使得经由计算机或其它可编程数据处理装置的处理器执行的这些指令使能对流程图和/或框图的一个或多个方框中指定的功能/动作的实现。这种处理器可以是但不限于是通用处理器、专用处理器、特殊应用处理器或者现场可编程逻辑电路。还可理解,框图和/或流程图中的每个方框以及框图和/或流程图中的方框的组合,也可以由执行指定的功能或动作的专用硬件来实现,或可由专用硬件和计算机指令的组合来实现。
还需要说明的是,本发明中提及的示例性实施例,基于一系列的步骤或者装置描述一些方法或系统。但是,本发明不局限于上述步骤的顺序,也就是说,可以按照实施例中提及的顺序执行步骤,也可以不同于实施例中的顺序,或者若干步骤同时执行。
以上所述,仅为本发明的具体实施方式,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、模块和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。应理解,本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。
- 一种推送信息存储方法、装置、服务器和计算机存储介质
- 一种推送信息存储方法、装置、服务器和计算机存储介质