CN111831699A - 数据缓存方法、电子设备及计算机可读介质 - Google Patents
数据缓存方法、电子设备及计算机可读介质 Download PDFInfo
- Publication number
- CN111831699A CN111831699A CN202010995699.5A CN202010995699A CN111831699A CN 111831699 A CN111831699 A CN 111831699A CN 202010995699 A CN202010995699 A CN 202010995699A CN 111831699 A CN111831699 A CN 111831699A
- Authority
- CN
- China
- Prior art keywords
- data
- cache
- caching
- cached
- threshold
- 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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种数据缓存方法、电子设备及计算机可读介质:首先获取待缓存数据的第一数据量大小和待缓存数据所属的数据集的第二数据量大小;其次确定与第一数据量大小和第二数据量大小对应的缓存阈值;然后确定与缓存阈值对应的缓存模式,以通过对应的缓存模式对包括待缓存数据的数据集进行数据缓存。由于缓存模式是基于待缓存数据的第一数据量大小和待缓存数据所属的数据集的第二数据量大小确定的,因此可以针对不同的数据集确定适合该数据集的缓存模式,实现根据数据集自身的属性智能的进行数据集的缓存分配,并且设置了多种不同的缓存模式以适应不同的缓存情况,因此可以合理的将数据集分配至不同层级的缓存中,提高了整体的搜索性能。
Description
技术领域
本发明实施例涉及数据处理技术领域,尤其涉及一种数据缓存方法、电子设备及计算机可读介质。
背景技术
随着互联网的发展,人们已经习惯于通过搜索引擎查询自己想要获取的知识,搜索引擎每天可能接到成千上万的请求,其中有很大一部分是重复的。为了提高访问速度,可以将这部分重复请求的结果缓存起来,使得下次请求访问该结果时,无需从源数据库访问,直接将缓存中的结果反馈给用户。
相关技术中的全文搜索引擎包括elasticsearch,solr,***等,它们可以从互联网提取各个网站的信息,建立起数据库,并能检索与用户查询条件相匹配的记录,然后按一定的排列顺序返回结果。它们虽然自身存在缓存,但是由于对数据的缓存分配不合理,会发生内存溢出等问题,影响整体搜索性能。
发明内容
本发明提供了一种数据缓存方案,以至少部分解决上述问题。
根据本发明实施例的第一方面,提供了一种数据缓存方法,所述方法包括:获取待缓存数据的第一数据量大小和所述待缓存数据所属的数据集的第二数据量大小;然后确定与所述第一数据量大小和所述第二数据量大小对应的缓存阈值;最后确定与所述缓存阈值对应的缓存模式,以通过所述对应的缓存模式对包括所述待缓存数据的数据集进行数据缓存;其中,缓存模式根据预设的多级缓存生成,所述缓存模式包括多种,每种缓存模式中包括至少一级缓存。
根据本发明实施例的第二方面,提供了一种电子设备,所述设备包括:一个或多个处理器;计算机可读介质,配置为存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如第一方面所述的数据缓存方法。
根据本发明实施例的第三方面,提供了一种计算机可读介质,其上存储有计算机程序,该程序被处理器执行时实现如第一方面所述的数据缓存方法。
根据本发明实施例提供的方案:首先获取待缓存数据的第一数据量大小和所述待缓存数据所属的数据集的第二数据量大小;其次确定与所述第一数据量大小和所述第二数据量大小对应的缓存阈值;然后确定与所述缓存阈值对应的缓存模式,以通过所述对应的缓存模式对包括所述待缓存数据的数据集进行数据缓存。本方案由于缓存模式的确定是基于待缓存数据的第一数据量大小和所述待缓存数据所属的数据集的第二数据量大小确定的,因此,可以针对不同的数据集确定适合该数据集的缓存模式,实现根据数据集自身的属性智能的进行数据集的缓存分配,并且设置了多种不同的缓存模式以适应不同的缓存情况,因此可以合理的将数据集分配至不同层级的缓存中,提高了整体的搜索性能,同时也能够避免由于数据集缓存不合理导致的内存溢出等问题。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为本发明实施例提供的三级缓存的缓存架构示意图;
图2为根据本发明实施例一的一种数据缓存方法的步骤流程图;
图3为本发明实施例提供的智能多级缓存模型示意图;
图4为本发明实施例提供的人工配置多级缓存模型示意图;
图5为根据本发明实施例二的一种数据缓存方法的步骤流程图;
图6为本发明实施例提供一种数据缓存流程的示意图;
图7为根据本发明实施例三的一种电子设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅配置为解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
为便于理解本发明实施例的数据缓存方案,以下首先以三级缓存为例,对本发明实施例的缓存架构进行说明,如图1所示,业务端通过路由转发集群将待缓存数据及其数据集进行不同级别的缓存。示例性地,第一层级缓存和第二层级缓存可设置于本地设备中,图中示意为“服务集群”,但本领域技术人员应当明了,一个服务集群可以包括至少一台服务设备如服务器等,每个服务集群中的每台服务设备均可采用该种本地两级缓存设置,当然也可以仅有部分服务设备采用该种缓存设置,基于此,图1中的服务集群意指包括设置有该种缓存设备的服务设备形成的集群。其中,第一层级缓存可以为本地内存缓存,图中以“jvm-cache”示出;第二层级缓存可以为本地文件缓存,图中以“file-cache”示出。而第三层级缓存可以为分布式缓存。在进行搜索时,图中的搜索引擎例如可以是elasticsearch搜索引擎,其可以基于上述多级缓存和其对应的数据库进行搜索,其中,所述数据库可以采用倒排索引的形式存储数据。此外,路由转发集群还可以实时收集历史搜索数据(或者搜索日志等),然后传输至日志收集***flume,然后通过kafka对收集的历史搜索数据进行实时计算,做搜索关键字命中分析,以及搜索关键字的热度分析,以为进行数据缓存提供依据。
但需要说明的是,以上仅为示例性说明,在实际应用中还可以增加更多层级的缓存,例如,CDN缓存,代理服务器缓存等。
基于上述示例性架构,下面结合多个实施例对本发明的数据缓存方案进行说明。
实施例一
参照图2,示出了根据本发明实施例一提供的一种数据缓存方法的步骤流程图。
本实施例的数据缓存方法包括以下步骤:
步骤101、获取待缓存数据的第一数据量大小和所述待缓存数据所属的数据集的第二数据量大小。
在本实施例中,以数据存储方案是K-V型存储方案作为示例,上述待缓存数据可以理解为搜索关键字key以及其对应的值value,当有很多数量的key时,并且这些key属于很多个业务时,可以根据业务类型的不同,将key以及其对应的value构建为一个数据集。可以理解,不同的业务类型可以对应不同的数据集,因此可以获取数据集中待缓存数据的第一数据量大小,以及数据集的第二数据量大小,进而可以基于这两个参数选择合适的缓存模式。
以业务类型为查询考试成绩为例,若一个班级有50名同学,则可以将50名同学中每个学生的学号作为key,每个学生的各科考试成绩作为value,则待缓存数据的第一数据量大小可以理解为某一个学生的key-value数据量大小,所述待缓存数据所属的数据集的第二数据量大小,可以理解为包括该学生的50名学生的key-value数据量大小。
步骤102、确定与所述第一数据量大小和所述第二数据量大小对应的缓存阈值。
在本实施例中,可以根据待进行缓存的设备的容量情况对上述数据集中的待缓存数据设置合适的缓存阈值。
进一步地,在一可选的实施方式中,可以根据待进行缓存的设备的内存容量以及所述设备中的虚拟设备的内存容量中的至少一者,确定本地内存缓存对应的第一缓存阈值;和/或,根据所述设备的文件***容量,确定本地文件缓存对应的第二缓存阈值。
在本实施例中,待进行缓存的设备可以是本地设备,也可以是分布式缓存集群中的设备,本实施例不做限制。在进行阈值设置时,可以从以下几点考虑:
第一点:可以基于当前待进行缓存的设备的内存大小,进行本地内存缓存对应的第一缓存阈值调整。
作为一种示例,可以将占用量最大值不超过待进行缓存的设备的可用内存的1/3作为第一缓存阈值的上限。举例而言,若当前待进行缓存的设备内存大小为16G,则设置第一缓存阈值的最大值不超过16/3,即,当此时有多个内存占用量大约是0.05G的数据集需要进行本地内存缓存时,可以缓存100个这样的数据集。可以理解,该第一缓存阈值可以根据实际情况进行设置。第一缓存阈值还可以根据当前待进行缓存的设备的内存大小和该设备中的JVM内存设置大小进行设置,原理同上,此处不再赘述。其中,JVM内存为待进行缓存的设备中的虚拟设备的内存容量。
第二点:基于当前待进行缓存的设备的文件***容量,确定本地文件缓存对应的第二缓存阈值。
作为一种示例,考虑到***文件中有日志等很多数据产生,可以将占用量最大值不超过待进行缓存的设备的***文件容量大小的1/8,作为第二缓存阈值的上限。举例而言,若当前待进行缓存的设备的文件***容量是200G,则设置第二缓存阈值的最大值不超过25,即,当此时有多个内存占用量大约是0.05G的数据集需要进行本地文件缓存时,可以缓存100个这样的数据集。可以理解,该第二缓存阈值同样也是可以根据实际情况进行设置。
在实际数据缓存过程中,例如在虚拟设备的数据缓存过程中,通常可以利用垃圾收集机制(Garbage Collection,GC)自动监测所有正在使用的对象,对内存中已死亡或长久无使用的对象进行清除和回收,从而实现内存的自动管理。虚拟设备的内存包括年轻代空间和老年代空间,GC在垃圾清理过程中会将数据量较大的对象直接分配到老年代空间,若分配的数据量过大则容易造成老年代空间不足,久而久之会造成fullGC,因此待缓存数据的数据量大小超过一定的阈值时(该阈值可以根据本地设备的属性进行设置),最好不进行本地内存缓存,而通过上述实施例可以根据待进行缓存的设备的容量情况,对待缓存的数据设置合适的缓存阈值,通过该缓存阈值设置进行待缓存数据的合理分配,不仅能够防止内存溢出,还能避免造成频繁的fullGC。
步骤103、确定与所述缓存阈值对应的缓存模式,以通过所述对应的缓存模式对包括所述待缓存数据的数据集进行数据缓存;其中,缓存模式根据预设的多级缓存生成,所述缓存模式包括多种,每种缓存模式中包括至少一级缓存。
在本实施例中,如图3所示,可以根据确定的缓存阈值,基于步骤101中获取的所述第一数据量大小和所述第二数据量大小,选择对应的缓存模式。可选地,在所述第一数据量大小和所述第二数据量大小的基础上,还可以服务为维度(图中以appid表示一个服务进程),通过智能缓存选取器选择对应的缓存模式,该缓存模式可以是预先根据多级缓存配置好的缓存模式,每种缓存模式中包括至少一个层级的缓存。可选地,上述多级缓存至少包括本地缓存和分布式缓存,所述本地缓存包括本地内存缓存和本地文件缓存。
在本实施例中,对待缓存数据进行多级缓存包括但不限于本地内存缓存和/或本地文件缓存和/或分布式缓存,例如还可以包括CDN缓存和/或代理服务器缓存等,本实施例不做限制。
本实施例的本地内存缓存的优势是应用和Cache是在同一个进程内部,请求缓存非常快速,没有过多的网络开销;本地文件缓存相比于本地内存缓存容量会大一些,但是请求缓存速度会慢一些;而分布式缓存中可以缓存更大容量的数据。因此通过上述多级缓存配置的缓存模式,可以将适合放在本地内存中的数据缓存在本地内存中,将数据量太大的数据,缓存在分布式缓存集群中,能够实现合理的对待缓存的数据进行缓存。
作为一种示例,预先配置的缓存模式可以包括以下三种:
第一缓存模式可以包括三级缓存,该三级缓存可以包括本地内存缓存、本地文件缓存和分布式缓存。
第二缓存模式可以包括二级缓存,该二级缓存可以包括本地文件缓存和分布式缓存。
第三缓存模式可以包括一级缓存,该一级缓存可以包括分布式缓存。
在本实施例中,通过配置的第一缓存模式,能够适合缓存待缓存数据的第一数据量大小较小,且待缓存数据所属的数据集的第二数据量大小较小的数据。
通过配置的第二缓存模式,能够适合缓存待缓存数据的第一数据量大小较大,或者待缓存数据所属的数据集的第二数据量大小较大的数据。
通过配置的第三缓存模式,能够适合待缓存数据所属的数据集的第二数据量大小很大的数据。
具体地,参照图3,若所述第一数据量大小小于所述第一缓存阈值,且所述第二数据量大小小于所述第二缓存阈值,则确定与所述缓存阈值对应的缓存模式为第一缓存模式,其中,所述第一缓存模式包括三级缓存;和/或,若所述第一数据量大小大于或等于所述第一缓存阈值,或者,所述第二数据量大小大于或等于所述第二缓存阈值并小于预设的第三缓存阈值,则确定与所述缓存阈值对应的缓存模式为第二缓存模式;其中,所述第二缓存模式包括二级缓存;和/或,若所述第二数据量大小大于或等于预设的第三缓存阈值,则确定与所述缓存阈值对应的缓存模式为第三缓存模式;其中,所述第三缓存模式包括一级缓存;其中,所述预设的第三缓存阈值大于所述第二缓存阈值,所述第二缓存阈值大于所述第一缓存阈值。
举例而言,上述步骤102获得的第一缓存阈值为16/3,第二缓存阈值为25,则,若所述第一数据量大小用“Value(key)”表示,所述第二数据量大小用“value(keys)”表示,则当Value(key)<16/3 && value(keys)<25,可以确定对应的缓存模式为第一缓存模式,当Value(key)≥16/3 || (value(keys)≥25 && value(keys)<100,可以确定对应的缓存模式为第二缓存模式,当value(keys)≥100,可以确定对应的缓存模式为第三缓存模式。其中,第三缓存阈值可以根据人工经验进行设置,可以理解,此处的100仅仅是作为一种示例。
可选地,还可以为第一缓存阈值以及第二缓存阈值配置默认值(兜底策略),例如,第一缓存阈值为1M,第二缓存阈值为50M。则当Value(key)<1M && value(keys)<50M,可以确定对应的缓存模式为第一缓存模式,当Value(key)>1M || (value(keys)>50M && value(keys)<100M,可以确定对应的缓存模式为第二缓存模式,当value(keys)≥100M,可以确定对应的缓存模式为第三缓存模式。此处的100M可以是根据缓存设备的文件***容量大小的1/4计算得到的。
当还考虑服务维度时,不同服务的阈值可以不同。例如,对于服务1来说,其第一缓存阈值为1M,第二缓存阈值为50M;而对于服务2来说,其第一缓存阈值为2M,第二缓存阈值为70M,等等,具体设置可由本领域技术人员适当设置。
上述实施例通过配置的三种智能缓存模式,当获取的待缓存数据的第一数据量大小较小,且待缓存数据所属的数据集的第二数据量大小较小时,可以确定对应的缓存模式可以包括三级缓存。当待缓存数据的第一数据量大小较大,或者待缓存数据所属的数据集的第二数据量大小较大时,可以确定对应的缓存模式可以包括二级缓存。当待缓存数据所属的数据集的第二数据量大小很大时,可以确定对应的缓存模式可以包括一级缓存。即,可以通过上述三种智能缓存模式,将适合缓存在本地内存的数据进行本地内存缓存,将适合缓存在本地文件***的数据进行本地文件缓存,将适合缓存在分布式集群中的数据进行分布式缓存,提高了数据缓存分配的合理性。
本发明实施例提供的方案:首先获取待缓存数据的第一数据量大小和所述待缓存数据所属的数据集的第二数据量大小;其次确定与所述第一数据量大小和所述第二数据量大小对应的缓存阈值;然后确定与所述缓存阈值对应的缓存模式,以通过所述对应的缓存模式对包括所述待缓存数据的数据集进行数据缓存。本方案由于缓存模式的确定是基于待缓存数据的第一数据量大小和所述待缓存数据所属的数据集的第二数据量大小确定的,因此,可以针对不同的数据集确定适合该数据集的缓存模式,实现根据数据集自身的属性智能的进行数据集的缓存分配,并且设置了多种不同的缓存模式(每种缓存模式中包括至少一级缓存)以适应不同的缓存情况,因此可以合理的将数据集分配至不同层级的缓存中,提高了整体的搜索性能,同时也能够避免由于数据集缓存不合理导致的内存溢出等问题。
可选地,当发生特殊情况时,例如出现内存溢出等情况时,可以通过***进行报警,运维人员收到报警信息后,可以调整缓存模式配置,如调整本地内存缓存、本地文件缓存、分布式缓存等各个层级的缓存的任意组合,从而可以得到多种缓存模式,如本地内存缓存+分布式缓存模式等等。缓存级数越多,可配置的模式也越多,如图4所示,通过配置缓存模式的方式灵活性更高。
本实施例的数据缓存方法可以由任意适当的具有数据处理能力的电子设备执行,包括但不限于:服务器、移动终端(如手机、PAD等)和PC机等。
实施例二
在实施例一的步骤101之前,可以先确定待缓存的数据及所述待缓存数据所属的数据集,包括图5所示的步骤。图6为数据缓存流程的示意图,下面结合图6对本方案进行详细的描述。
步骤201、获取历史搜索数据的热度信息,根据所述热度信息确定待缓存数据及所述待缓存数据所属的数据集。
在本实施例中,历史搜索数据可以通过“异步多线程打点”的方式获得,即,可以通过埋点的方式收集用户的历史搜索数据,并回流到大数据库以进行热度信息分析,根据分析得到的热度信息,确定待缓存数据及所述待缓存数据所属的数据集,可以使得没有及时出现在缓存中的热点数据能够及时暴露。
具体地,可以收集历史搜索数据,并计算所述历史搜索数据中搜索关键字的热度值;然后获取热度值高于预设热度值的多个搜索关键字以及其对应的多个数据;并将所述多个数据确定为多个待缓存数据,根据所述多个待缓存数据构建所述数据集。
在本实施例中,可以通过kafka***先对收集到的历史搜索数据进行聚合或者加工处理,然后计算历史搜索数据中各个搜索关键字key的热度值。预设热度值可以动态配置,例如,满分值为100的话,那么可以将预设热度值设置为95,可以理解,当历史搜索数据中各个搜索关键字key的热度值有超出95的,则可以确定其为热度关键字,各个热度关键字对应的数据即为热点数据,可以将热度关键字以及其对应的热度数据,确定为待缓存数据,可选地,可以将这些待缓存数据按照业务类型的不同,构建为不同的数据集。
上述实施例通过对历史搜索数据进行热度分析,能够得到各个搜索关键字key的热度值,从而可以根据key的热度值确定热度数据value,进而可以把没有及时出现在缓存中的热点数据拉取到缓存中,提高了缓存的命中率。
可选地,可以通过以下方式计算所述历史搜索数据中搜索关键字的热度值:通过滑动窗口方式采集搜索关键字,得到所述搜索关键字的命中次数;然后根据所述搜索关键字的命中次数以及所述搜索关键字对应信息所属的数据集的预计最大命中阈值,获取所述搜索关键字的热度值。
在本实施例中,滑动窗口的大小可以根据实际情况进行设置,本实施例不做限制,上述搜索关键字对应信息所属的数据集的预计最大命中阈值,也可以基于人工经验进行设置,历史搜索数据中存在大量的搜索关键字,通过滑动窗口的方式采集搜索关键字,使得不会遗漏搜索关键字,从而使得得到的搜索关键字的热度值更加准确。
上述公式为一种归一化计算公式,即n超过m后,可以使得热度值为1,可以将热度值为1的key,作为热度关键字。通过上述公式计算key的热度值,使得热度值的计算更加准确方便。
步骤202、对根据所述热度信息确定的待缓存数据,及所述待缓存数据所属的数据集进行参数过滤,得到最终的待缓存数据及所述最终的待缓存数据所属的数据集。
在本实施例中,可以对根据所述热度信息确定的待缓存数据,及所述待缓存数据所属的数据集进行参数过滤。其中,参数过滤条件可以通过任意适当的配置工具如apllo配置平台等进行动态配置,可以根据具体业务类型,将各个业务类型对应的业务参数过滤,以减少不必要的数据流量进入缓存,还可以将***参数过滤掉,例如,***参数可以是searchid,userid等不影响查询结果的参数,由于searchid作用是跟踪***调用,每次请求不同所以不需要参与到计算key值。上述业务参数的过滤,可以根据具体的业务背景灵活配置,本实施例不做限制。在参数过滤后,得到了最终的待缓存数据及所述最终的待缓存数据所属的数据集,解决了全量缓存浪费资源的问题。
参见图6,在通过kafka对收集的历史搜索数据进行实时计算,做搜索关键字命中分析,以及搜索关键字的热度分析并进行参数过滤后,可以将分析结果输入数据库hbase,智能缓存拉取模块可以从数据库hbase中拉取需要进行缓存的热点数据,并通过智能缓存选取器选择合适的缓存模式,对热点数据进行缓存。
在实际查询中,查询条件往往是多个组合,可选地,可以通过进行多条件合并hash哈希算法,完成key值归一化,即可以将上述最终的待缓存数据所属的数据集中,针对查询事件,将查询事件对应的关键字进行归一化处理,得到目标关键字,使得查询的结果命中率更高。
本实施例通过对历史搜索数据进行热度搜索关键字的热度计算,基于热度关键字得到热点数据,使得缓存的命中率得到提高,然后对热点数据进行参数过滤,使得能够节省缓存空间。
实施例三
图7为本发明实施例三中电子设备的硬件结构;如图7所示,该电子设备可以包括:处理器(processor)301、通信接口(Communications Interface)302、存储器(memory)303、以及通信总线304。
其中:
处理器301、通信接口302、以及存储器303通过通信总线304完成相互间的通信。
通信接口302,用于与其它电子设备或服务器进行通信。
处理器301,用于执行程序305,具体可以执行上述数据缓存方法实施例中的相关步骤。
具体地,程序305可以包括程序代码,该程序代码包括计算机操作指令。
处理器301可能是中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。智能设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个CPU;也可以是不同类型的处理器,如一个或多个CPU以及一个或多个ASIC。
存储器303,用于存放程序305。存储器303可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
程序305具体可以用于使得处理器301执行以下操作:获取待缓存数据的第一数据量大小和所述待缓存数据所属的数据集的第二数据量大小;确定与所述第一数据量大小和所述第二数据量大小对应的缓存阈值;确定与所述缓存阈值对应的缓存模式,以通过所述对应的缓存模式对包括所述待缓存数据的数据集进行数据缓存;其中,缓存模式根据预设的多级缓存生成,所述缓存模式包括多种,每种缓存模式中包括至少一级缓存。
在一种可选的实施方式中,程序305还用于使得处理器301在确定与所述第一数据量大小和所述第二数据量大小对应的缓存阈值时:根据待进行缓存的设备的内存容量以及所述设备中的虚拟设备的内存容量中的至少一者,确定本地内存缓存对应的第一缓存阈值;和/或,根据所述设备的文件***容量,确定本地文件缓存对应的第二缓存阈值。
在一种可选的实施方式中,程序305还用于使得处理器301在确定与所述缓存阈值对应的缓存模式时:若所述第一数据量大小小于所述第一缓存阈值,且所述第二数据量大小小于所述第二缓存阈值,则确定与所述缓存阈值对应的缓存模式为第一缓存模式,其中,所述第一缓存模式包括三级缓存;和/或,若所述第一数据量大小大于或等于所述第一缓存阈值,或者,所述第二数据量大小大于或等于所述第二缓存阈值并小于预设的第三缓存阈值,则确定与所述缓存阈值对应的缓存模式为第二缓存模式;其中,所述第二缓存模式包括二级缓存;和/或,若所述第二数据量大小大于或等于预设的第三缓存阈值,则确定与所述缓存阈值对应的缓存模式为第三缓存模式;其中,所述第三缓存模式包括一级缓存;其中,所述预设的第三缓存阈值大于所述第二缓存阈值,所述第二缓存阈值大于所述第一缓存阈值。
在一种可选的实施方式中,第一缓存模式包括的三级缓存包括:本地内存缓存、本地文件缓存和分布式缓存。
在一种可选的实施方式中,第二缓存模式包括的二级缓存包括:本地文件缓存和分布式缓存。
在一种可选的实施方式中,第三缓存模式包括的一级缓存包括分布式缓存。
在一种可选的实施方式中,程序305还用于使得处理器301在所述获取待缓存数据的第一数据量大小和所述待缓存数据所属的数据集的第二数据量大小之前:获取历史搜索数据的热度信息,根据所述热度信息确定待缓存数据及所述待缓存数据所属的数据集。
在一种可选的实施方式中,程序305还用于使得处理器301在获取历史搜索数据的热度信息,根据所述热度信息确定待缓存数据及所述待缓存数据所属的数据集时:收集历史搜索数据,并计算所述历史搜索数据中搜索关键字的热度值;获取热度值高于预设热度值的多个搜索关键字以及其对应的多个数据;将所述多个数据确定为多个待缓存数据,根据所述多个待缓存数据构建所述数据集。
在一种可选的实施方式中,程序305还用于使得处理器301在计算所述历史搜索数据中搜索关键字的热度值时:通过滑动窗口方式采集搜索关键字,得到所述搜索关键字的命中次数;根据所述搜索关键字的命中次数以及所述搜索关键字对应信息所属的数据集的预计最大命中阈值,获取所述搜索关键字的热度值。
在一种可选的实施方式中,程序305还用于使得处理器301在根据所述搜索关键字的命中次数以及所述搜索关键字对应的数据集的预计最大命中阈值,获取所述搜索关键字的热度值时:根据公式,获取所述搜索关键字的热度值;其中,m为所述预计最大命中阈值,n为所述命中次数。
在一种可选的实施方式中,程序305还用于使得处理器301在所述获取历史搜索数据的热度信息,根据所述热度信息确定待缓存数据及所述待缓存数据所属的数据集之后:对根据所述热度信息确定的待缓存数据,及所述待缓存数据所属的数据集进行参数过滤,得到最终的待缓存数据及所述最终的待缓存数据所属的数据集。
在一种可选的实施方式中,所述多级缓存至少包括本地缓存和分布式缓存,所述本地缓存包括本地内存缓存和本地文件缓存。
程序305中各步骤的具体实现可以参见上述数据缓存方法实施例中的相应步骤中对应的描述,在此不赘述。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的设备和模块的具体工作过程,可以参考前述方法实施例中的对应过程描述,在此不再赘述。
通过本实施例的电子设备,由于缓存模式的确定是基于待缓存数据的第一数据量大小和所述待缓存数据所属的数据集的第二数据量大小确定的,因此,可以针对不同的数据集确定适合该数据集的缓存模式,实现根据数据集自身的属性智能的进行数据集的缓存分配,并且由于每种缓存模式中包括至少一级缓存,因此可以合理的将数据集分配至不同层级的缓存中,提高了整体的搜索性能,同时也能够避免由于数据集缓存不合理导致的内存溢出等问题。
特别地,根据本发明的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含配置为执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分从网络上被下载和安装,和/或从可拆卸介质被安装。在该计算机程序被中央处理单元(CPU)执行时,执行本发明实施例中的方法中限定的上述功能。需要说明的是,本发明实施例所述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读介质例如可以但不限于是电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储介质(RAM)、只读存储介质(ROM)、可擦式可编程只读存储介质(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储介质(CD-ROM)、光存储介质件、磁存储介质件、或者上述的任意合适的组合。在本发明实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。而在本发明实施例中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输配置为由指令执行***、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写配置为执行本发明实施例的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络:包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本发明各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个配置为实现规定的逻辑功能的可执行指令。上述具体实施例中有特定先后关系,但这些先后关系只是示例性的,在具体实现的时候,这些步骤可能会更少、更多或执行顺序有调整。即在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括接入模块和发送模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定。
作为另一方面,本发明实施例还提供了一种计算机可读介质,其上存储有计算机程序,该程序被处理器执行时实现如上述实施例中所描述的数据缓存方法。
作为另一方面,本发明实施例还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的装置中所包含的;也可以是单独存在,而未装配入该装置中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该装置执行时,使得该装置:获取待缓存数据的第一数据量大小和所述待缓存数据所属的数据集的第二数据量大小;然后确定与所述第一数据量大小和所述第二数据量大小对应的缓存阈值;最后确定与所述缓存阈值对应的缓存模式,以通过所述对应的缓存模式对包括所述待缓存数据的数据集进行数据缓存;其中,缓存模式根据预设的多级缓存生成,所述缓存模式包括多种,每种缓存模式中包括至少一级缓存。
在本发明的各种实施方式中所使用的表述“第一”、“第二”、“所述第一”或“所述第二”可修饰各种部件而与顺序和/或重要性无关,但是这些表述不限制相应部件。以上表述仅配置为将元件与其它元件区分开的目的。
以上描述仅为本发明的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本发明实施例中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本发明实施例中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (14)
1.一种数据缓存方法,其特征在于,所述方法包括:
获取待缓存数据的第一数据量大小和所述待缓存数据所属的数据集的第二数据量大小;
确定与所述第一数据量大小和所述第二数据量大小对应的缓存阈值;
确定与所述缓存阈值对应的缓存模式,以通过所述对应的缓存模式对包括所述待缓存数据的数据集进行数据缓存;
其中,缓存模式根据预设的多级缓存生成,所述缓存模式包括多种,每种缓存模式中包括至少一级缓存。
2.根据权利要求1所述的方法,其特征在于,所述确定与所述第一数据量大小和所述第二数据量大小对应的缓存阈值,包括:
根据待进行缓存的设备的内存容量以及所述设备中的虚拟设备的内存容量中的至少一者,确定本地内存缓存对应的第一缓存阈值;
和/或,
根据所述设备的文件***容量,确定本地文件缓存对应的第二缓存阈值。
3.根据权利要求2所述的方法,其特征在于,所述确定与所述缓存阈值对应的缓存模式,包括:
若所述第一数据量大小小于所述第一缓存阈值,且所述第二数据量大小小于所述第二缓存阈值,则确定与所述缓存阈值对应的缓存模式为第一缓存模式,其中,所述第一缓存模式包括三级缓存;和/或,
若所述第一数据量大小大于或等于所述第一缓存阈值,或者,所述第二数据量大小大于或等于所述第二缓存阈值并小于预设的第三缓存阈值,则确定与所述缓存阈值对应的缓存模式为第二缓存模式;其中,所述第二缓存模式包括二级缓存;和/或,
若所述第二数据量大小大于或等于预设的第三缓存阈值,则确定与所述缓存阈值对应的缓存模式为第三缓存模式;其中,所述第三缓存模式包括一级缓存;
其中,所述预设的第三缓存阈值大于所述第二缓存阈值,所述第二缓存阈值大于所述第一缓存阈值。
4.根据权利要求3所述的方法,其特征在于,所述第一缓存模式包括的三级缓存包括:本地内存缓存、本地文件缓存和分布式缓存。
5.根据权利要求3所述的方法,其特征在于,所述第二缓存模式包括的二级缓存包括:本地文件缓存和分布式缓存。
6.根据权利要求3所述的方法,其特征在于,所述第三缓存模式包括的一级缓存包括分布式缓存。
7.根据权利要求1所述的方法,其特征在于,在所述获取待缓存数据的第一数据量大小和所述待缓存数据所属的数据集的第二数据量大小之前,还包括:
获取历史搜索数据的热度信息,根据所述热度信息确定待缓存数据及所述待缓存数据所属的数据集。
8.根据权利要求7所述的方法,其特征在于,所述获取历史搜索数据的热度信息,根据所述热度信息确定待缓存数据及所述待缓存数据所属的数据集,包括:
收集历史搜索数据,并计算所述历史搜索数据中搜索关键字的热度值;
获取热度值高于预设热度值的多个搜索关键字以及其对应的多个数据;
将所述多个数据确定为多个待缓存数据,根据所述多个待缓存数据构建所述数据集。
9.根据权利要求8所述的方法,其特征在于,所述计算所述历史搜索数据中搜索关键字的热度值,包括:
通过滑动窗口方式采集搜索关键字,得到所述搜索关键字的命中次数;
根据所述搜索关键字的命中次数以及所述搜索关键字对应信息所属的数据集的预计最大命中阈值,获取所述搜索关键字的热度值。
11.根据权利要求7所述的方法,其特征在于,所述获取历史搜索数据的热度信息,根据所述热度信息确定待缓存数据及所述待缓存数据所属的数据集之后,还包括:
对根据所述热度信息确定的待缓存数据,及所述待缓存数据所属的数据集进行参数过滤,得到最终的待缓存数据及所述最终的待缓存数据所属的数据集。
12.根据权利要求1所述的方法,其特征在于,所述多级缓存至少包括本地缓存和分布式缓存,所述本地缓存包括本地内存缓存和本地文件缓存。
13.一种电子设备,其特征在于,所述设备包括:
一个或多个处理器;
计算机可读介质,配置为存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-12中任一项所述的数据缓存方法。
14.一种计算机可读介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-12中任一项所述的数据缓存方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010995699.5A CN111831699B (zh) | 2020-09-21 | 2020-09-21 | 数据缓存方法、电子设备及计算机可读介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010995699.5A CN111831699B (zh) | 2020-09-21 | 2020-09-21 | 数据缓存方法、电子设备及计算机可读介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111831699A true CN111831699A (zh) | 2020-10-27 |
CN111831699B CN111831699B (zh) | 2021-01-08 |
Family
ID=72918484
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010995699.5A Active CN111831699B (zh) | 2020-09-21 | 2020-09-21 | 数据缓存方法、电子设备及计算机可读介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111831699B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112463389A (zh) * | 2020-12-10 | 2021-03-09 | 中国科学院深圳先进技术研究院 | 分布式机器学习任务的资源管理方法及装置 |
CN112699154A (zh) * | 2021-03-25 | 2021-04-23 | 上海洋漪信息技术有限公司 | 应对大流量数据的多级缓存方法 |
CN113282585A (zh) * | 2021-05-28 | 2021-08-20 | 山东浪潮通软信息科技有限公司 | 一种报表计算方法、装置、设备及介质 |
CN113741976A (zh) * | 2021-08-25 | 2021-12-03 | 武汉大学 | 缓存颠簸消除方法、装置、设备及存储介质 |
CN113760178A (zh) * | 2021-01-29 | 2021-12-07 | 北京京东拓先科技有限公司 | 缓存数据处理方法、装置、电子设备和计算机可读介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101682621A (zh) * | 2007-03-12 | 2010-03-24 | 思杰***有限公司 | 用于高速缓存操作的***和方法 |
US20150032963A1 (en) * | 2013-07-29 | 2015-01-29 | Lsi Corporation | Dynamic selection of cache levels |
CN105786918A (zh) * | 2014-12-26 | 2016-07-20 | 亿阳信通股份有限公司 | 基于数据载入存储空间的数据查询方法和装置 |
CN107733806A (zh) * | 2016-08-12 | 2018-02-23 | ***通信集团湖南有限公司 | 一种数据处理方法及装置 |
CN108132958A (zh) * | 2016-12-01 | 2018-06-08 | 阿里巴巴集团控股有限公司 | 一种多级缓存数据存储、查询、调度以及处理方法及装置 |
CN109240946A (zh) * | 2018-09-06 | 2019-01-18 | 平安科技(深圳)有限公司 | 数据的多级缓存方法及终端设备 |
-
2020
- 2020-09-21 CN CN202010995699.5A patent/CN111831699B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101682621A (zh) * | 2007-03-12 | 2010-03-24 | 思杰***有限公司 | 用于高速缓存操作的***和方法 |
US20150032963A1 (en) * | 2013-07-29 | 2015-01-29 | Lsi Corporation | Dynamic selection of cache levels |
CN105786918A (zh) * | 2014-12-26 | 2016-07-20 | 亿阳信通股份有限公司 | 基于数据载入存储空间的数据查询方法和装置 |
CN107733806A (zh) * | 2016-08-12 | 2018-02-23 | ***通信集团湖南有限公司 | 一种数据处理方法及装置 |
CN108132958A (zh) * | 2016-12-01 | 2018-06-08 | 阿里巴巴集团控股有限公司 | 一种多级缓存数据存储、查询、调度以及处理方法及装置 |
CN109240946A (zh) * | 2018-09-06 | 2019-01-18 | 平安科技(深圳)有限公司 | 数据的多级缓存方法及终端设备 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112463389A (zh) * | 2020-12-10 | 2021-03-09 | 中国科学院深圳先进技术研究院 | 分布式机器学习任务的资源管理方法及装置 |
CN113760178A (zh) * | 2021-01-29 | 2021-12-07 | 北京京东拓先科技有限公司 | 缓存数据处理方法、装置、电子设备和计算机可读介质 |
CN112699154A (zh) * | 2021-03-25 | 2021-04-23 | 上海洋漪信息技术有限公司 | 应对大流量数据的多级缓存方法 |
CN112699154B (zh) * | 2021-03-25 | 2021-06-18 | 上海洋漪信息技术有限公司 | 应对大流量数据的多级缓存方法 |
CN113282585A (zh) * | 2021-05-28 | 2021-08-20 | 山东浪潮通软信息科技有限公司 | 一种报表计算方法、装置、设备及介质 |
CN113282585B (zh) * | 2021-05-28 | 2023-12-29 | 浪潮通用软件有限公司 | 一种报表计算方法、装置、设备及介质 |
CN113741976A (zh) * | 2021-08-25 | 2021-12-03 | 武汉大学 | 缓存颠簸消除方法、装置、设备及存储介质 |
CN113741976B (zh) * | 2021-08-25 | 2024-06-11 | 武汉大学 | 缓存颠簸消除方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111831699B (zh) | 2021-01-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111831699B (zh) | 数据缓存方法、电子设备及计算机可读介质 | |
US6751627B2 (en) | Method and apparatus to facilitate accessing data in network management protocol tables | |
US8438336B2 (en) | System and method for managing large filesystem-based caches | |
US20130046783A1 (en) | Real time searching and reporting | |
KR20030048045A (ko) | 데이터 네트워크의 정보 검색 및 분석 방법 | |
CN112527843B (zh) | 数据查询方法、装置、终端设备和存储介质 | |
CN107682466A (zh) | Ip地址的地域信息搜索方法及其装置 | |
CN106959928B (zh) | 一种基于多级缓存结构的流式数据实时处理方法及*** | |
US11188443B2 (en) | Method, apparatus and system for processing log data | |
CN111782692B (zh) | 一种频率控制方法及装置 | |
WO2020181820A1 (zh) | 数据缓存方法、装置、计算机设备和存储介质 | |
CN110637292A (zh) | 用于查询资源高速缓存的***和方法 | |
CN108647266A (zh) | 一种异构数据快速分布存储、交互方法 | |
Akhtar et al. | Avic: a cache for adaptive bitrate video | |
CN112597231A (zh) | 一种数据处理方法和装置 | |
CN110677270A (zh) | 一种域名的可缓存性分析方法及*** | |
CN113761390A (zh) | 一种用于属性亲密度的分析方法和*** | |
CN111858733A (zh) | 一种基于互联网多源异构数据的政务信息比对方法及*** | |
Lee et al. | Caching complementary space for location-based services | |
CN105530303A (zh) | 一种网络缓存线性替换方法 | |
CN109951811B (zh) | 一种服务号码短信监控方法、装置及*** | |
KR20120085375A (ko) | 로그데이터 분석시스템 | |
CN111782588A (zh) | 一种文件读取方法、装置、设备和介质 | |
CN118113854B (zh) | 一种基于妇科护理知识库的在线咨询方法及*** | |
Cui et al. | NSTN: Name-based smart tracking for network status in information-centric internet of things |
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 |