本申请属于信息查询技术领域,尤其涉及信息查询方法、信息查询装置、终端设备及计算机可读存储介质。
背景技术:
在查询数据库时,为了提高查询效率,往往是先进行缓存查询。如果缓存查询中,相应的元素不存在或者已经过期,再对数据库进行查询。
然而,某些请求查询的请求者,如恶意请求者,可能会故意地对一些数据库的缓存中没有的元素进行大量的、反复的请求,导致请求全部集中在数据库,从而导致数据库宕机等情况的发生(即缓存击穿等情况的发生),影响了对数据库的正常查询。
技术实现要素:
本申请实施例提供了信息查询方法、信息查询装置、终端设备及计算机可读存储介质,可以解决对数据库的缓存中没有的元素进行大量的、反复的查询,使得查询全部集中在数据库,从而影响了对数据库的正常查询的问题。
第一方面,本申请实施例提供了一种信息查询方法,包括:
基于第一哈希函数集合中的至少一个第一哈希函数,确定各个预设标签在布谷过滤器的预设存储空间中所对应的存储位置并进行存储,其中,所述第一哈希函数集合包括至少两个第一哈希函数,各个第一哈希函数相互不同且相互关联,且对于任一预设标签,所述预设标签基于每个第一哈希函数所得到的在布谷过滤器的预设存储空间中的存储位置不同;
将所述布谷过滤器与预设服务相关联,以使得所述预设服务能够调用所述布谷过滤器;
若确定所述预设服务获取到关于待查询元素的查询请求,则通过第二哈希函数得到所述待查询元素对应的第一标签;
基于所述预设服务,通过所述布谷过滤器查询所述预设存储空间中是否存储有与所述第一标签相同的预设标签;
若所述预设存储空间中存储有与所述第一标签相同的预设标签,则查询缓存中是否存储有关于所述待查询元素的目标信息。
第二方面,本申请实施例提供了一种信息查询装置,包括:
存储模块,用于基于第一哈希函数集合中的至少一个第一哈希函数,确定各个预设标签在布谷过滤器的预设存储空间中所对应的存储位置并进行存储,其中,所述第一哈希函数集合包括至少两个第一哈希函数,各个第一哈希函数相互不同且相互关联,且对于任一预设标签,所述预设标签基于每个第一哈希函数所得到的在布谷过滤器的预设存储空间中的存储位置不同;
设置模块,用于将所述布谷过滤器与预设服务相关联,以使得所述预设服务能够调用所述布谷过滤器;
处理模块,用于若确定所述预设服务获取到关于待查询元素的查询请求,则通过第二哈希函数得到所述待查询元素对应的第一标签;
第一查询模块,用于基于所述预设服务,通过所述布谷过滤器查询所述预设存储空间中是否存储有与所述第一标签相同的预设标签;
第二查询模块,用于若所述预设存储空间中存储有与所述第一标签相同的预设标签,则查询缓存中是否存储有关于所述待查询元素的目标信息。
第三方面,本申请实施例提供了一种终端设备,包括存储器、处理器、显示器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如第一方面所述的信息查询方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面所述的信息查询方法。
第五方面,本申请实施例提供了一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得终端设备执行上述第一方面中所述的信息查询方法。
本申请实施例与现有技术相比存在的有益效果是:本申请实施例中,可以基于第一哈希函数集合中的至少一个第一哈希函数,确定各个预设标签在布谷过滤器的预设存储空间中所对应的存储位置并进行存储,其中,所述第一哈希函数集合包括至少两个第一哈希函数,因此,可以通过多个第一哈希函数,使得每一个预设标签可以在布谷过滤器的预设存储空间中,存在多个对应的存储位置,并选择其中一个存储位置存储所述预设标签;而各个第一哈希函数相互不同且相互关联,因此,在实际应用中,可以根据其中的一个第一哈希函数所对应的存储位置,得到其他第一哈希函数所对应的存储位置,从而在一些情况下,可以通过一个第一哈希函数,快速查找到所述预设标签所对应的多个存储位置,并确定多个存储位置中可以进行存储的一个存储位置。此外,由于所述布谷过滤器所采用的架构和编程语言可能与发出查询请求的对象(如各种应用)不同,因此,将所述布谷过滤器与预设服务相关联,以使得所述预设服务能够调用所述布谷过滤器,可以克服布谷过滤器所采用的架构和编程语言与发出查询请求的对象不同的问题,从而可以通过所述预设服务,为发出查询请求的各种对象调用布谷过滤器进行查询,以适应多种应用场景的需要,大大提升了所述布谷过滤器的通用性。若所述预设存储空间中存储有与所述第一标签相同的预设标签,则查询缓存中是否存储有关于所述待查询元素的目标信息,此时,可以通过所述布谷过滤器,对待查询元素进行过滤,只让有效的查询内容进行后续对缓存乃至数据库的查询,从而避免缓存击穿等情况的发生,维护了数据库的正常使用。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一实施例提供的第一种信息查询方法的流程示意图;
图2是本申请一实施例提供的第二种信息查询方法的流程示意图;
图3是本申请一实施例提供的信息查询方法所对应的一种架构示意图;
图4是本申请一实施例提供的一种信息查询装置的结构示意图;
图5是本申请实施例提供的终端设备的结构示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
应当理解,当在本申请说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本申请说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
在本申请说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
具体地,图1示出了本申请实施例提供的第一种信息查询方法的流程图,该信息查询方法可以应用于终端设备。
本申请实施例中,所述终端设备的类型可以有多种。例如,所述终端设备可以是服务器、手机、平板电脑、可穿戴设备、车载设备、增强现实(augmentedreality,ar)/虚拟现实(virtualreality,vr)设备、笔记本电脑、超级移动个人计算机(ultra-mobilepersonalcomputer,umpc)、上网本、个人数字助理(personaldigitalassistant,pda)等。对于终端设备的具体类型,本申请实施例在此不作任何限制。
在一种应用场景中,所述终端设备中可以通过特定软件模块来实现本申请的信息查询方法。其中,该终端设备的特定软件模块可以包括用于实现所述布谷过滤器的功能的模块以及实现所述预设服务的功能的模块。所述特定软件模块可以由一种或多种编程语言来实现,其中,所述特定软件模块中,在实现不同的功能时,可以采用不同的编程语言。例如,实现所述布谷过滤器的功能的模块可以通过go语言来实现,而实现所述预设服务的功能的模块可以通过java语言来实现。
此外,所述特定软件模块还可以用于实现其他功能,并且,所述终端设备还可以包括其他软件模块,在此不作限制。
例如,在一些实施例中,所述终端设备还可以包括实现服务注册中心的功能、目标网关的功能、网关的功能以及其他业务系统的功能中的至少一个的软件模块,从而可以实现所述信息查询方法的一些实施例中所涉及的诸如获取预设服务的地址、验证查询请求的来源的合法性等功能。当然,在一些实施例中,上述的服务注册中心的功能、目标网关的功能、网关的功能以及其他业务系统的功能等也可以在除所述终端设备之外的其他终端上实现,此时,其他终端可以与所述终端设备通过指定的信息传输方式(如有线传输或者无线传输等方式)进行信息传输。
该信息查询方法包括:
步骤s101,基于第一哈希函数集合中的至少一个第一哈希函数,确定各个预设标签在布谷过滤器的预设存储空间中所对应的存储位置并进行存储,其中,所述第一哈希函数集合包括至少两个第一哈希函数,各个第一哈希函数相互不同且相互关联,且对于任一预设标签,所述预设标签基于每个第一哈希函数所得到的在布谷过滤器的预设存储空间中的存储位置不同。
本申请实施例中,哈希函数又称为散列函数(hashfunction),用于计算待存储的元素所对应的存储地址。所述第一哈希函数用于确定各个预设标签在布谷过滤器的预设存储空间中所对应的存储位置。示例性的,所述第一哈希函数可以是基于md5、sha1、md4等哈希算法的函数。所述预设标签可以表示对应的预设元素。在一些实施例中,所述预设标签可以是通过预设哈希函数,对预设元素进行计算所得到的。示例性的,所述预设元素可以包括诸如网站、电话号码、邮箱、单词等等。通过预先设置所述预设元素,可以获得诸如网站、电话号码、邮箱等的白名单或者黑名单,也可以获得正确的单词名单等等。所述预设标签被称为对应的预设元素的指纹,其中,所述指纹为数字指纹,是基于哈希函数所生成的、某一文件或者元素的标识。一般来说,所述预设标签的大小小于所述预设元素,因此,在所述预设存储空间中存储所述预设标签,而不是存储对应的预设元素,可以节省存储资源,提高空间效率。
需要说明的是,在一些实施例中,对于预设哈希函数,不同的预设元素所对应的预设标签可以能会相同,因此,在实际应用中,可能会存在一定的误判率,但通过选择合适的哈希函数以及一定的优化,该误判率可以降低至合理的范围,而不影响数据库的正常使用,
本申请实施例中,所述布谷过滤器又称为布谷鸟过滤器(cuckoofilter)。所述布谷过滤器的具体结构可以根据实际应用场景进行选择和优化。在实际使用中,不同的预设标签通过第一哈希函数所得到的存储位置可能相同。因此,本申请实施例中,所述布谷过滤器的所述第一哈希函数集合可以包括至少两个第一哈希函数,从而可以得到所述预设标签在所述预设存储空间中所对应的至少两个可存储位置,并且对于任一预设标签,所述预设标签基于每个第一哈希函数所得到的在布谷过滤器的预设存储空间中的存储位置不同。
本申请实施例中,对于任一预设标签,存储所述预设标签的存储位置可以是一个,也可以是多个。而一般来说,对于任一所述预设标签,只需要在一个对应的存储位置进行存储即可,此时,所述预设标签所对应的其他存储位置中,可能未存储有其他预设标签,也可能存储有其他预设标签,该其他预设标签通过第一哈希函数所得到的存储位置与该预设标签的存储位置相同。因此,所述确定各个预设标签在布谷过滤器的预设存储空间中所对应的存储位置并进行存储,可以包括确定各个预设标签在布谷过滤器的预设存储空间中所对应的多个可存储位置,并且对于任一预设标签,选择所述预设标签所对应的多个可存储位置中的存储内容为空的一个存储位置进行存储;此外,也可以通过一个第一哈希函数确定各个预设标签在布谷过滤器的预设存储空间中所对应的一个可存储位置,并判断该可存储位置的存储内容是否为空,若为空,则将该可存储位置作为存储位置进行存储,若不为空,则再通过另一个第一哈希函数确定各个预设标签在布谷过滤器的预设存储空间中所对应的一个可存储位置,直到确定所述预设标签所对应的多个可存储位置中的存储内容为空的一个存储位置,并进行存储。
在一些实施例中,若对于某一个预设标签,所述预设标签所对应的多个可存储位置均不为空,则可以选择所述预设标签所对应的一个可存储位置,并进行关于所述预设标签的替换存储操作,关于所述预设标签的所述替换存储操作可以使得所述预设标签替换该存储位置中预先存储的其他预设标签以进行存储;而对于被替换出的所述其他预设标签,计算该其他预设标签在所述布谷过滤器的预设存储空间中的其他可存储位置,选择所述其他预设标签所对应的多个可存储位置中的存储内容为空的一个存储位置进行存储,或者进行关于该其他预设标签的替换存储操作,直到替换存储操作的次数达到预设次数阈值,则可以认为所述布谷过滤器的预设存储空间不足,从而对所述预设存储空间进行扩容,所述扩容的程度可以实际应用场景来确定。
本申请实施例中,各个第一哈希函数相互关联,因此,各个所述第一哈希函数所对应的存储位置也互相关联。其中,各个第一哈希函数互相关联的方式可以有多种,示例性的,可以设置所述第一哈希函数集合包括两个第一哈希函数,所述两个第一哈希函数的设置方式如下:
p1=hash(key)
p2=p1xorhash(f(key))
其中,p1为一个第一哈希函数,p2为另一个第一哈希函数,所述key为任一预设标签,所述f(key)为对该预设标签通过预设函数进行处理,例如,所述f(key)=fingerprint(key),此时,所述fingerprint(key)可以为所述预设标签所对应的指纹。所述xor为异或运算。此时,可以通过所述第一哈希函数中的一个,查找到所述预设标签的两个对应的存储位置。当然,所述第一哈希函数的具体设置方式也可以是其他能够使得各个第一哈希函数相互不同且相互关联的方式,在此不做限定。
步骤s102,将所述布谷过滤器与预设服务相关联,以使得所述预设服务能够调用所述布谷过滤器。
本申请实施例中,所述布谷过滤器所采用的编程语言常常与发出查询请求的对象(如各种应用)不同,例如,所述布谷过滤器可以通过go语言来编写,而各种应用,如浏览器、应用程序、预设平台等的查询请求是通过java语言来实现,因此,本申请实施例中,可以将所述布谷过滤器与预设服务相关联,以使得所述预设服务能够调用所述布谷过滤器。其中,示例性的,所述预设服务可以为daemonset或者sidecar。示例性的,所述预设服务可以为sidecar,所述sidecar为微服务,可以将应用功能从应用中分离出来作为单独进程。通过sidecar可以向应用无侵入的添加多种功能。在本申请实施例中,所述预设服务能够为编程语言不同于布谷过滤器的应用调用所述布谷过滤器。
由于所述布谷过滤器所采用的架构和编程语言可能与发出查询请求的对象(如各种应用)不同,因此,将所述布谷过滤器与预设服务相关联,以使得所述预设服务能够调用所述布谷过滤器,可以克服布谷过滤器所采用的架构和编程语言与发出查询请求的对象不同的问题,从而可以通过所述预设服务,为发出查询请求的各种对象调用布谷过滤器进行查询,以适应多种应用场景的需要,大大提升了所述布谷过滤器的通用性。
步骤s103,若确定所述预设服务获取到关于待查询元素的查询请求,则通过第二哈希函数得到所述待查询元素对应的第一标签。
本申请实施例中,所述待查询元素可以为待查询的内容的全部,或者待查询的内容的标识(例如待查询的内容的id、名称、编号等等)。所述待查询元素的具体形式可以有多种。例如,在一种实施例中,所述待查询元素可以是数据库查询中的键(key),在实际应用中,所述键的类型可以有多种,可以根据实际需求来确定。例如,所述键可以包括候选键(candidatekey)、主键(primarykey)、次要键(alternate(secondary)key)、超键(superkey)、外(部)键(foreignkeys)等等。
本申请实施例中,示例性的,所述第二哈希函数可以是基于md5、sha1、md4等哈希算法的函数。在一些实施例中,所述预设标签可以是通过预设哈希函数,对预设元素进行计算所得到的,此时,相应的,所述第二哈希函数可以与所述预设哈希函数相同。并且,在一些实施例中,所述第一标签可以为所述待查询元素的指纹。其中,所述指纹为数字指纹,是基于哈希函数所生成的、某一文件或者元素的标识。
步骤s104,基于所述预设服务,通过所述布谷过滤器查询所述预设存储空间中是否存储有与所述第一标签相同的预设标签。
本申请实施例中,所述预设服务调用所述布谷过滤器,以查询所述预设存储空间中是否存储有与所述第一标签相同的预设标签。其中,具体的,首先可以确定基于所述第一哈希函数集合中的至少一个第一哈希函数,计算所述第一标签在所述布谷过滤器的预设存储空间中所对应的第一存储位置,再查询各个所述第一存储位置是否存储有与所述第一标签相同的预设标签。
可选的,在一些实施例中,基于所述第一哈希函数集合中的至少一个第一哈希函数,计算所述第一标签在所述布谷过滤器的预设存储空间中所对应的至少一个第一存储位置;
基于所述预设服务,通过所述布谷过滤器查询各个第一存储位置中是否存储有与所述第一标签相同的预设标签,直到遍历所述第一标签所对应的各个第一存储位置,或者直到确定所述预设存储空间中存储有与所述第一标签相同的预设标签。
本申请实施例中,计算得到的第一存储位置的个数,可以根据实际应用场景来确定。例如,若计算得到的第一个第一存储位置中,就存储有与所述第一标签相同的预设标签,则此时,只需计算得到一个第一存储位置即可。而若遍历所述第一标签所对应的各个第一存储位置之后,各个第一存储位置中均未存储有与所述第一标签相同的预设标签,则可以认为该第一标签为无效标签。
步骤s105,若所述预设存储空间中存储有与所述第一标签相同的预设标签,则查询缓存中是否存储有关于所述待查询元素的目标信息。
本申请实施例中,若所述预设存储空间中存储有与所述第一标签相同的预设标签,则可以认为该第一标签为有效的标签,即所述第一标签所对应的待查询元素为有效的待查询内容,从而可以在所述缓存乃至数据库中进行进一步的查询。
本申请实施例中,所述待查询元素可以是所述目标信息的标识,当然,也可以是所述目标信息本身。当所述待查询元素是所述目标信息的标识时,所述待查询元素可以是所述目标信息的id、名称、编号等等,以用于唯一的标识所述目标信息,此时,通过查询可以获取到所述待查询元素所标识的目标信息。
在一些实施例中,在查询缓存中是否存储有关于所述待查询元素的目标信息之后,还包括:
若所述缓存中未存储有关于所述待查询元素的目标信息,则向数据库查询关于所述待查询元素的目标信息。
若所述缓存中存储有关于所述待查询元素的目标信息,则获取所述缓存中关于所述待查询元素的目标信息。
本申请实施例中,若向数据库查询到关于所述待查询元素的目标信息,则可以将该关于所述待查询元素的目标信息存储至所述缓存中,以便于后续的快速查询,减轻数据库的查询压力。
其中,在一些实施例中,所述缓存中,可能会存储有在当前时间之前的指定时间段或者指定运行周期内,从所述数据库查询到的内容;当然,所述缓存也可以包括其他内容,例如对所述数据库的高频查询内容。所述高频查询内容可以是查询频率高于预设频率的内容。
在一些实施例中,该信息查询方法还包括:
若所述第一标签在所述预设存储空间中不存在对应的存储位置,则确定所述第一标签为无效标签。
本申请实施例中,若所述第一标签为无效标签,则不再进一步查询缓存中是否存储有关于所述待查询元素的目标信息,并且,可以返回指示所述第一标签为无效标签的指示指令,此时,可以通过所述布谷过滤器过滤掉一些无效的查询内容,从而避免了无效的查询内容对缓存乃至数据库进行大量的、反复的查询请求。
在一些实施例中,所述基于第一哈希函数集合中的至少一个第一哈希函数,确定各个预设标签在布谷过滤器的预设存储空间中所对应的存储位置并进行存储,包括:
确定各个预设标签的类别;
分割布谷过滤器的预设存储空间,以使得所述预设存储空间包括至少一个子存储空间,其中,每一个子存储空间与一种类别相对应;
基于第一哈希函数集合中的至少一个第一哈希函数,确定各个预设标签在对应的子存储空间中的存储位置并进行存储;
所述若确定所述预设服务获取到关于待查询元素的查询请求,则通过第二哈希函数得到所述待查询元素对应的第一标签,包括:
若确定所述预设服务获取到关于待查询元素的查询请求,则确定所述待查询元素的类别;
根据所述待查询元素的类别,确定所述待查询元素所对应的第二哈希函数,其中,不同的类别对应不同的第二哈希函数;
通过所对应的第二哈希函数得到所述待查询元素对应的第一标签;
所述基于所述预设服务,通过所述布谷过滤器查询所述预设存储空间中是否存储有与所述第一标签相同的预设标签,包括:
根据所述待查询元素的类别,确定所述预设存储空间中,所述待查询元素所对应的子存储空间;
基于所述预设服务,通过所述布谷过滤器查询所述子存储空间中是否存储有与所述第一标签相同的预设标签。
本申请实施例中,一般来说,由于所述预设标签可以是通过预设哈希函数,对预设元素进行计算所得到的。因此,所述预设标签的类别可以根据所述预设标签所对应的预设元素的类别来确定。所述类别可以根据实际应用场景来确定,例如,所述类别可以包括网址、电话号码、邮箱等等。由于不同的预设哈希函数对不同类型的数据进行计算时的性能可能会根据类型的不同而存在差异,因此,不同类别的预设标签所对应的预设哈希函数可以不同。而由于所述第二哈希函数可以与所述预设哈希函数相同,因此,所述第二哈希函数也可以以有多个。此时,可以根据所述待查询元素的类别而选择不同的第二哈希函数,并根据所述待查询元素的类别,确定所述预设存储空间中,所述待查询元素所对应的子存储空间。
通过针对不同的类别采用不同的第二哈希函数以及子存储空间,可以更有针对性的对不同的元素进行存储和查询,从而减小不同标签对应的存储位置相同的几率,降低错误率,提高查询效率。
本申请实施例中,由于对于不同类别的待查询元素,可以基于不同的第二哈希函数进行处理,并且在不同的子存储空间中进行查询,因此,在一些实施例中,在确定所述待查询元素的类别之后,在后续的处理中,可以针对不同类别的待查询元素进行并行查询,从而提高了查询速度和查询效率。
本申请实施例中,可以基于第一哈希函数集合中的至少一个第一哈希函数,确定各个预设标签在布谷过滤器的预设存储空间中所对应的存储位置并进行存储,其中,所述第一哈希函数集合包括至少两个第一哈希函数,因此,可以通过多个第一哈希函数,使得每一个预设标签可以在布谷过滤器的预设存储空间中,存在多个对应的存储位置,并选择其中一个存储位置存储所述预设标签;而各个第一哈希函数相互不同且相互关联,因此,在实际应用中,可以根据其中的一个第一哈希函数所对应的存储位置,得到其他第一哈希函数所对应的存储位置,从而在一些情况下,可以通过一个第一哈希函数,快速查找到所述预设标签所对应的多个存储位置,并确定多个存储位置中可以进行存储的一个存储位置。此外,由于所述布谷过滤器所采用的架构和编程语言可能与发出查询请求的对象(如各种应用)不同,因此,将所述布谷过滤器与预设服务相关联,以使得所述预设服务能够调用所述布谷过滤器,可以克服布谷过滤器所采用的架构和编程语言与发出查询请求的对象不同的问题,从而可以通过所述预设服务,为发出查询请求的各种对象调用布谷过滤器进行查询,以适应多种应用场景的需要,大大提升了所述布谷过滤器的通用性。若所述预设存储空间中存储有与所述第一标签相同的预设标签,则查询缓存中是否存储有关于所述待查询元素的目标信息,此时,可以通过所述布谷过滤器,对待查询元素进行过滤,只让有效的查询内容进行后续对缓存乃至数据库的查询,从而避免缓存击穿等情况的发生,维护了数据库的正常使用。
在上述实施例的基础上,图2示出了本申请实施例提供的第二种信息查询方法的流程图。
该信息查询方法包括:
步骤s201,基于第一哈希函数集合中的至少一个第一哈希函数,确定各个预设标签在布谷过滤器的预设存储空间中所对应的存储位置并进行存储,其中,所述第一哈希函数集合包括至少两个第一哈希函数,各个第一哈希函数相互不同且相互关联,且对于任一预设标签,所述预设标签基于每个第一哈希函数所得到的在布谷过滤器的预设存储空间中的存储位置不同。
步骤s202,将所述布谷过滤器与预设服务相关联,以使得所述预设服务能够调用所述布谷过滤器。
步骤s203,若确定所述预设服务从目标网关获取到关于待查询元素的查询请求,则通过第二哈希函数得到所述待查询元素对应的第一标签。
本申请实施例中,所述目标网关可以是终端设备的系统中,提供的微服务架构的应用程序编程接口(applicationprogramminginterface,api)网关。示例性的,所述目标网关可以是springcloud中的zuul等。一般来说,从设备、网站等获取到的请求(如查询请求),都需要通过所述目标网关的认证。
其中,所述目标网关可以预先获取到所述预设服务的地址,从而可以向所述预设服务发送关于待查询元素的查询请求,在一些实施例中,所述目标网关可以从注册服务中心获取到所述预设服务的地址。其中,所述注册服务中心可以提供可供调用的服务列表,其中,可以包括所述预设服务的地址的信息。
步骤s204,基于所述预设服务,通过所述布谷过滤器查询所述预设存储空间中是否存储有与所述第一标签相同的预设标签。
步骤s205,若所述预设存储空间中存储有与所述第一标签相同的预设标签,则查询缓存中是否存储有关于所述待查询元素的目标信息。
本实施例的步骤s201、s202、s204和步骤s205与上述的步骤s101、s102、s104和步骤s105相同或相似,此处不再赘述。
在一些实施例中,所述若确定所述预设服务从目标网关获取到关于待查询元素的查询请求,则通过第二哈希函数得到所述待查询元素对应的第一标签,包括:
若确定所述预设服务接收到所述目标网关根据从服务注册中心获取到的所述预设服务的地址,向所述预设服务发送的关于待查询元素的查询请求,则通过第二哈希函数得到所述待查询元素对应的第一标签,其中,所述服务注册中心注册有所述预设服务和所述目标网关。
本申请实施例中,所述服务注册中心,可以提供可供调用的服务列表,所述服务列表中可以包含各个服务提供方的地址。设备、网站、应用等通过目标网关在进行服务调用时,可以根据服务列表和服务提供方(如各个业务系统、预设服务等)的地址进行服务调用。其中,所述服务注册中心可以预先注册有所述预设服务和所述目标网关,从而使得所述服务注册中心可以获取到所述预设服务的地址,并可以为所述目标网关提供所述预设服务的地址。
示例性的,所述服务注册中心可以是zookeeper、eureka等等,在此不做限制。
需要说明的是,所述服务注册中心还可以注册有其他业务系统或者其他服务、接口等等,所述服务注册中心的具体设置方式可以根据实际应用场景进行设置。
本申请实施例中,所述目标网关根据所述预设服务的地址,向所述预设服务发出关于待查询元素的查询请求,可以是所述目标网关直接向所述预设服务发出关于待查询元素的查询请求,也可以是通过所述服务注册中心,向所述预设服务发出关于待查询元素的查询请求,该信息传输方式可以有多种。
在一些实施例中,所述预设服务的地址是由所述服务注册中心在接收到所述目标网关的地址查询请求之后返回至所述目标网关,其中,所述地址查询请求指示所述目标网关向所述服务注册中心请求查询所述预设服务的地址,且所述地址查询请求为所述目标网关在获取到指定应用的关于待查询元素的查询请求并验证所述查询请求的来源为目标来源时所生成的,所述预设服务为与所述查询请求相匹配的服务。
本申请实施例中,所述目标来源可以是预先设置的,也可以是根据所述查询请求的来源的地址等信息进行判断来确定的。示例性的,所述目标来源可以包括目标应用(如指定应用类型或者指定属性的应用)、目标设备等等。所述目标网关在获取到关于待查询元素的查询请求时,验证所述查询请求的来源是否为目标来源,可以减少非法查询,进一步保证数据库查询的正常使用。本申请实施例中,所述与所述查询请求相匹配的服务可以是根据服务的功能和所述查询请求的需求来确定,例如,所述查询请求是查询数据库信息,则本申请实施例中,所述预设服务即为与所述查询请求相匹配的服务。
下面以一个具体示例来示例性的说明本申请实施例提供的一种信息查询方法所对应的一种示例性架构。
如图3所示,为本申请实施例提供的一种信息查询方法所对应的架构示意图。其中,所述目标来源可以是浏览器,所述目标网关可以是zuul,所述服务注册中心可以是eureka,所述服务注册中心还可以注册有其他业务系统,如业务系统1和业务系统2,所述预设服务可以是sidecar。
需要说明的是,所述图3所示的架构可以在一个或多个终端上实现。其中,实现所述架构的终端可以包括执行上述信息查询方法的终端设备,还可以包括除该终端设备之外的其他终端。
一般来说,所述布谷过滤器和所述预设服务可以由执行本申请实施例中的信息查询方法的终端设备来实现;而所述架构中的其他部分,即所述目标来源、目标网关、服务注册中心以及其他业务系统可以由运行所述预设服务和所述布谷过滤器的终端设备来实现,也可以由一个或多个其他终端来实现。此时,所述架构的各个部分之间可以根据各个部分在终端上的分布情况,分别采用系统间通信、无线通信或者有线通信等方式中的至少一种来进行信息传递。
需要说明的是,图3仅为本申请实施例中的架构的一种示例性展示,而非限定。
本申请实施例在所述预设服务从目标网关,获取到关于待查询元素的查询请求时,通过第二哈希函数得到所述待查询元素对应的第一标签,可以通过所述预设服务和所述目标网关,获取到来自各种来源的查询请求,从而可以适应多种应用场景的需要,并且,通过所述目标网关,可以保障所述查询请求的来源的安全性。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
对应于上文实施例所述的信息查询方法,图4示出了本申请实施例提供的一种信息查询装置的结构框图,为了便于说明,仅示出了与本申请实施例相关的部分。
参照图4,该信息查询装置4包括:
存储模块401,用于基于第一哈希函数集合中的至少一个第一哈希函数,确定各个预设标签在布谷过滤器的预设存储空间中所对应的存储位置并进行存储,其中,所述第一哈希函数集合包括至少两个第一哈希函数,各个第一哈希函数相互不同且相互关联,且对于任一预设标签,所述预设标签基于每个第一哈希函数所得到的在布谷过滤器的预设存储空间中的存储位置不同;
设置模块402,用于将所述布谷过滤器与预设服务相关联,以使得所述预设服务能够调用所述布谷过滤器;
处理模块403,用于若确定所述预设服务获取到关于待查询元素的查询请求,则通过第二哈希函数得到所述待查询元素对应的第一标签;
第一查询模块404,用于基于所述预设服务,通过所述布谷过滤器查询所述预设存储空间中是否存储有与所述第一标签相同的预设标签;
第二查询模块405,用于若所述预设存储空间中存储有与所述第一标签相同的预设标签,则查询缓存中是否存储有关于所述待查询元素的目标信息。
可选的,所述处理模块403具体用于:
若确定所述预设服务从目标网关获取到关于待查询元素的查询请求,则通过第二哈希函数得到所述待查询元素对应的第一标签。
可选的,所述处理模块403具体用于:
若确定所述预设服务接收到所述目标网关根据从服务注册中心获取到的所述预设服务的地址,向所述预设服务发送的关于待查询元素的查询请求,则通过第二哈希函数得到所述待查询元素对应的第一标签,其中,所述服务注册中心注册有所述预设服务和所述目标网关。
可选的,该信息查询装置4中,所述预设服务的地址是由所述服务注册中心在接收到所述目标网关的地址查询请求之后返回至所述目标网关,其中,所述地址查询请求指示所述目标网关向所述服务注册中心请求查询所述预设服务的地址,且所述地址查询请求为所述目标网关在获取到关于待查询元素的查询请求并验证所述查询请求的来源为目标来源时所生成的,所述预设服务为与所述查询请求相匹配的服务。
可选的,所述第一查询模块具体包括:
计算模块,用于基于所述第一哈希函数集合中的至少一个第一哈希函数,计算所述第一标签在所述布谷过滤器的预设存储空间中所对应的至少一个第一存储位置;
第二查询单元,用于基于所述预设服务,通过所述布谷过滤器查询各个第一存储位置中是否存储有与所述第一标签相同的预设标签,直到遍历所述第一标签所对应的各个第一存储位置,或者直到确定所述预设存储空间中存储有与所述第一标签相同的预设标签。
可选的,所述信息查询装置4还包括:
第三查询单元,用于若所述缓存中未存储有关于所述待查询元素的目标信息,则向数据库查询关于所述待查询元素的目标信息。
获取单元,用于若所述缓存中存储有关于所述待查询元素的目标信息,则获取所述缓存中关于所述待查询元素的目标信息。
可选的,所述存储模块401具体包括:
第一确定单元,用于确定各个预设标签的类别;
分割单元,用于分割布谷过滤器的预设存储空间,以使得所述预设存储空间包括至少一个子存储空间,其中,每一个子存储空间与一种类别相对应;
存储单元,用于基于第一哈希函数集合中的至少一个第一哈希函数,确定各个预设标签在对应的子存储空间中的存储位置并进行存储;
所述处理模块403具有包括:
第二确定单元,用于若确定所述预设服务获取到关于待查询元素的查询请求,则确定所述待查询元素的类别;
第三确定单元,用于根据所述待查询元素的类别,确定所述待查询元素所对应的第二哈希函数,其中,不同的类别对应不同的第二哈希函数;
处理单元,用于通过所对应的第二哈希函数得到所述待查询元素对应的第一标签;
所述第一查询模块404具体包括:
第四确定单元,用于根据所述待查询元素的类别,确定所述预设存储空间中,所述待查询元素所对应的子存储空间;
第四查询单元,用于基于所述预设服务,通过所述布谷过滤器查询对应的所述子存储空间中是否存储有与所述第一标签相同的预设标签。
本申请实施例中,可以基于第一哈希函数集合中的至少一个第一哈希函数,确定各个预设标签在布谷过滤器的预设存储空间中所对应的存储位置并进行存储,其中,所述第一哈希函数集合包括至少两个第一哈希函数,因此,可以通过多个第一哈希函数,使得每一个预设标签可以在布谷过滤器的预设存储空间中,存在多个对应的存储位置,并选择其中一个存储位置存储所述预设标签;而各个第一哈希函数相互不同且相互关联,因此,在实际应用中,可以根据其中的一个第一哈希函数所对应的存储位置,得到其他第一哈希函数所对应的存储位置,从而在一些情况下,可以通过一个第一哈希函数,快速查找到所述预设标签所对应的多个存储位置,并确定多个存储位置中可以进行存储的一个存储位置。此外,由于所述布谷过滤器所采用的架构和编程语言可能与发出查询请求的对象(如各种应用)不同,因此,将所述布谷过滤器与预设服务相关联,以使得所述预设服务能够调用所述布谷过滤器,可以克服布谷过滤器所采用的架构和编程语言与发出查询请求的对象不同的问题,从而可以通过所述预设服务,为发出查询请求的各种对象调用布谷过滤器进行查询,以适应多种应用场景的需要,大大提升了所述布谷过滤器的通用性。若所述预设存储空间中存储有与所述第一标签相同的预设标签,则查询缓存中是否存储有关于所述待查询元素的目标信息,此时,可以通过所述布谷过滤器,对待查询元素进行过滤,只让有效的查询内容进行后续对缓存乃至数据库的查询,从而避免缓存击穿等情况的发生,维护了数据库的正常使用。
需要说明的是,上述装置/单元之间的信息交互、执行过程等内容,由于与本申请方法实施例基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
图5为本申请一实施例提供的终端设备的结构示意图。如图5所示,该实施例的终端设备5包括:至少一个处理器50(图5中仅示出一个)处理器、存储器51以及存储在上述存储器51中并可在上述至少一个处理器50上运行的计算机程序52,上述处理器50执行上述计算机程序52时实现上述任意各个信息查询方法实施例中的步骤。
上述终端设备5可以是可穿戴设备、增强现实(augmentedreality,ar)/虚拟现实(virtualreality,vr)设备、桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。该终端设备可包括,但不仅限于,处理器50、存储器51。本领域技术人员可以理解,图5仅仅是终端设备5的举例,并不构成对终端设备5的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如还可以包括输入设备、输出设备、网络接入设备等。其中,上述输入设备可以包括键盘、触控板、指纹采集传感器(用于采集用户的指纹信息和指纹的方向信息)、麦克风、摄像头等,输出设备可以包括显示器、扬声器等。
所称处理器50可以是中央处理单元(centralprocessingunit,cpu),该处理器50还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
上述存储器51在一些实施例中可以是上述终端设备5的内部存储单元,例如终端设备5的硬盘或内存。上述存储器51在另一些实施例中也可以是上述终端设备5的外部存储设备,例如上述终端设备5上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。进一步地,上述存储器51还可以既包括上述终端设备5的内部存储单元也包括外部存储设备。上述存储器51用于存储操作系统、应用程序、引导装载程序(bootloader)、数据以及其他程序等,例如上述计算机程序的程序代码等。上述存储器51还可以用于暂时地存储已经输出或者将要输出的数据。
另外,尽管未示出,上述终端设备5还可以包括网络连接模块,如蓝牙模块wi-fi模块、蜂窝网络模块等等,在此不再赘述。
本申请实施例中,上述处理器50执行上述计算机程序52以实现上述任意各个信息查询方法实施例中的步骤时,可以基于第一哈希函数集合中的至少一个第一哈希函数,确定各个预设标签在布谷过滤器的预设存储空间中所对应的存储位置并进行存储,其中,所述第一哈希函数集合包括至少两个第一哈希函数,因此,可以通过多个第一哈希函数,使得每一个预设标签可以在布谷过滤器的预设存储空间中,存在多个对应的存储位置,并选择其中一个存储位置存储所述预设标签;而各个第一哈希函数相互不同且相互关联,因此,在实际应用中,可以根据其中的一个第一哈希函数所对应的存储位置,得到其他第一哈希函数所对应的存储位置,从而在一些情况下,可以通过一个第一哈希函数,快速查找到所述预设标签所对应的多个存储位置,并确定多个存储位置中可以进行存储的一个存储位置。此外,由于所述布谷过滤器所采用的架构和编程语言可能与发出查询请求的对象(如各种应用)不同,因此,将所述布谷过滤器与预设服务相关联,以使得所述预设服务能够调用所述布谷过滤器,可以克服布谷过滤器所采用的架构和编程语言与发出查询请求的对象不同的问题,从而可以通过所述预设服务,为发出查询请求的各种对象调用布谷过滤器进行查询,以适应多种应用场景的需要,大大提升了所述布谷过滤器的通用性。若所述预设存储空间中存储有与所述第一标签相同的预设标签,则查询缓存中是否存储有关于所述待查询元素的目标信息,此时,可以通过所述布谷过滤器,对待查询元素进行过滤,只让有效的查询内容进行后续对缓存乃至数据库的查询,从而避免缓存击穿等情况的发生,维护了数据库的正常使用。
本申请实施例还提供了一种计算机可读存储介质,上述计算机可读存储介质存储有计算机程序,上述计算机程序被处理器执行时实现可实现上述各个方法实施例中的步骤。
本申请实施例提供了一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得终端设备执行时实现可实现上述各个方法实施例中的步骤。
上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,上述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,上述计算机程序包括计算机程序代码,上述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。上述计算机可读介质至少可以包括:能够将计算机程序代码携带到拍照装置/终端设备的任何实体或装置、记录介质、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号、电信信号以及软件分发介质。例如u盘、移动硬盘、磁碟或者光盘等。在某些司法管辖区,根据立法和专利实践,计算机可读介质不可以是电载波信号和电信信号。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置/网络设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/网络设备实施例仅仅是示意性的,例如,上述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
以上上述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
1.一种信息查询方法,其特征在于,包括:
基于第一哈希函数集合中的至少一个第一哈希函数,确定各个预设标签在布谷过滤器的预设存储空间中所对应的存储位置并进行存储,其中,所述第一哈希函数集合包括至少两个第一哈希函数,各个第一哈希函数相互不同且相互关联,且对于任一预设标签,所述预设标签基于每个第一哈希函数所得到的在布谷过滤器的预设存储空间中的存储位置不同;
将所述布谷过滤器与预设服务相关联,以使得所述预设服务能够调用所述布谷过滤器;
若确定所述预设服务获取到关于待查询元素的查询请求,则通过第二哈希函数得到所述待查询元素对应的第一标签;
基于所述预设服务,通过所述布谷过滤器查询所述预设存储空间中是否存储有与所述第一标签相同的预设标签;
若所述预设存储空间中存储有与所述第一标签相同的预设标签,则查询缓存中是否存储有关于所述待查询元素的目标信息。
2.如权利要求1所述的信息查询方法,其特征在于,所述若确定所述预设服务获取到关于待查询元素的查询请求,则通过第二哈希函数得到所述待查询元素对应的第一标签,包括:
若确定所述预设服务从目标网关获取到关于待查询元素的查询请求,则通过第二哈希函数得到所述待查询元素对应的第一标签。
3.如权利要求2所述的信息查询方法,其特征在于,所述若确定所述预设服务从目标网关获取到关于待查询元素的查询请求,则通过第二哈希函数得到所述待查询元素对应的第一标签,包括:
若确定所述预设服务接收到所述目标网关根据从服务注册中心获取到的所述预设服务的地址,向所述预设服务发送的关于待查询元素的查询请求,则通过第二哈希函数得到所述待查询元素对应的第一标签,其中,所述服务注册中心注册有所述预设服务和所述目标网关。
4.如权利要求3所述的信息查询方法,其特征在于,所述预设服务的地址是由所述服务注册中心在接收到所述目标网关的地址查询请求之后返回至所述目标网关,其中,所述地址查询请求指示所述目标网关向所述服务注册中心请求查询所述预设服务的地址,且所述地址查询请求为所述目标网关在获取到关于待查询元素的查询请求并验证所述查询请求的来源为目标来源时所生成的,所述预设服务为与所述查询请求相匹配的服务。
5.如权利要求1所述的信息查询方法,其特征在于,所述基于所述预设服务,通过所述布谷过滤器查询所述预设存储空间中是否存储有与所述第一标签相同的预设标签,包括:
基于所述第一哈希函数集合中的至少一个第一哈希函数,计算所述第一标签在所述布谷过滤器的预设存储空间中所对应的至少一个第一存储位置;
基于所述预设服务,通过所述布谷过滤器查询各个第一存储位置中是否存储有与所述第一标签相同的预设标签,直到遍历所述第一标签所对应的各个第一存储位置,或者直到确定所述预设存储空间中存储有与所述第一标签相同的预设标签。
6.如权利要求1所述的信息查询方法,其特征在于,在查询缓存中是否存储有关于所述待查询元素的目标信息之后,还包括:
若所述缓存中未存储有关于所述待查询元素的目标信息,则向数据库查询关于所述待查询元素的目标信息;
若所述缓存中存储有关于所述待查询元素的目标信息,则获取所述缓存中关于所述待查询元素的目标信息。
7.如权利要求1至6任意一项所述的信息查询方法,其特征在于,所述基于第一哈希函数集合中的至少一个第一哈希函数,确定各个预设标签在布谷过滤器的预设存储空间中所对应的存储位置并进行存储,包括:
确定各个预设标签的类别;
分割布谷过滤器的预设存储空间,以使得所述预设存储空间包括至少一个子存储空间,其中,每一个子存储空间与一种类别相对应;
基于第一哈希函数集合中的至少一个第一哈希函数,确定各个预设标签在对应的子存储空间中的存储位置并进行存储;
所述若确定所述预设服务获取到关于待查询元素的查询请求,则通过第二哈希函数得到所述待查询元素对应的第一标签,包括:
若确定所述预设服务获取到关于待查询元素的查询请求,则确定所述待查询元素的类别;
根据所述待查询元素的类别,确定所述待查询元素所对应的第二哈希函数,其中,不同的类别对应不同的第二哈希函数;
通过所对应的第二哈希函数得到所述待查询元素对应的第一标签;
所述基于所述预设服务,通过所述布谷过滤器查询所述预设存储空间中是否存储有与所述第一标签相同的预设标签,包括:
根据所述待查询元素的类别,确定所述预设存储空间中,所述待查询元素所对应的子存储空间;
基于所述预设服务,通过所述布谷过滤器查询对应的所述子存储空间中是否存储有与所述第一标签相同的预设标签。
8.一种信息查询装置,其特征在于,包括:
存储模块,用于基于第一哈希函数集合中的至少一个第一哈希函数,确定各个预设标签在布谷过滤器的预设存储空间中所对应的存储位置并进行存储,其中,所述第一哈希函数集合包括至少两个第一哈希函数,各个第一哈希函数相互不同且相互关联,且对于任一预设标签,所述预设标签基于每个第一哈希函数所得到的在布谷过滤器的预设存储空间中的存储位置不同;
设置模块,用于将所述布谷过滤器与预设服务相关联,以使得所述预设服务能够调用所述布谷过滤器;
处理模块,用于若确定所述预设服务获取到关于待查询元素的查询请求,则通过第二哈希函数得到所述待查询元素对应的第一标签;
第一查询模块,用于基于所述预设服务,通过所述布谷过滤器查询所述预设存储空间中是否存储有与所述第一标签相同的预设标签;
第二查询模块,用于若所述预设存储空间中存储有与所述第一标签相同的预设标签,则查询缓存中是否存储有关于所述待查询元素的目标信息。
9.一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7任一项所述的信息查询方法。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的信息查询方法。
技术总结