CN109446225A - 数据缓存方法、装置、计算机设备及存储介质 - Google Patents
数据缓存方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN109446225A CN109446225A CN201811122026.8A CN201811122026A CN109446225A CN 109446225 A CN109446225 A CN 109446225A CN 201811122026 A CN201811122026 A CN 201811122026A CN 109446225 A CN109446225 A CN 109446225A
- Authority
- CN
- China
- Prior art keywords
- data cached
- cache
- data
- business scenario
- serializing
- 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
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供一种数据缓存方法、装置、计算机设备及存储介质。所述方法包括:获取业务场景的待缓存数据;根据所述业务场景和所述待缓存数据的特征确定所述待缓存数据所对应的序列化方式;根据所述业务场景确定所述待缓存数据所对应的缓存策略;配置序列化方式和缓存策略;当接收到缓存指令,根据配置后的序列化方式将所述待缓存数据,按照配置后的缓存策略保存至缓存数据库中。本申请实施例提高了序列化效率、数据缓存的效率以及数据查询的效率,从而提高了用户的体验。
Description
技术领域
本申请涉及数据处理技术领域,尤其涉及一种数据缓存方法、装置、计算机设备及存储介质。
背景技术
在数据库技术中,有一项重要的技术是对缓存的使用。在数据库中,同一用户可能多次执行相同的查询语句或者不同用户可能执行相同的查询语句。为了提高查询效率,可以将用户的查询结果放入缓存中。当用户下一次再执行相同查询或者下一个用户执行相同查询时,就可以直接从缓存中获取数据,而不用到硬盘/数据库中的数据文件中去读取数据,也可以省去相关解析的工作。因为内存的运行速度要比硬盘/数据快的多。为此通过缓存机制,可以提高查询的效率。而对于Redis(Remote Dictionary Server,远程数据服务)缓存数据库,缓存数据时需要将其序列化,然后再进行缓存。目前一般使用较多的是默认的序列化方式,即Java(JDK,Java Development Kit)的序列化方式,这种序列化方式的效率比较低,在反序列化的时候表现较差,从而导致用户的体验较差。
发明内容
本申请实施例提供一种数据缓存方法、装置、计算机设备及存储介质,可提高序列化效率和数据缓存以及数据查询的效率。
第一方面,本申请实施例提供了一种数据缓存方法,该方法包括:
获取业务场景的待缓存数据;根据所述业务场景和所述待缓存数据的特征确定所述待缓存数据所对应的序列化方式;确定所述待缓存数据所对应的缓存策略;配置序列化方式和缓存策略;当接收到缓存指令,根据配置后的序列化方式将所述待缓存数据,按照配置后的缓存策略保存至缓存数据库中。
第二方面,本申请实施例提供了一种数据缓存装置,该装置包括用于执行上述第一方面所述的方法对应的单元。
第三方面,本申请实施例提供了一种计算机设备,所述计算机设备包括存储器,以及与所述存储器相连的处理器;
所述存储器用于存储计算机程序,所述处理器用于运行所述存储器中存储的计算机程序,以执行上述第一方面所述的方法。
第四方面,本申请实施例提供了一种存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时,实现上述第一方面所述的方法。
本申请实施例根据不同的业务场景和不同待缓存数据的特征来确定待缓存数据所对应的序列化方式以及根据不同的业务场景确定对应的缓存策略,实现了多业务场景适配,即可在不同的业务场景中选择匹配的序列化方式和匹配缓存策略,且只需要进行简单的配置即可使用各种序列化方式和各种缓存策略。如此提高了序列化效率、数据缓存的效率以及数据查询的效率,从而提高了用户的体验。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的数据缓存方法的流程示意图;
图2是本申请实施例提供的数据缓存方法的子流程示意图;
图3是本申请实施例提供的数据缓存方法的子流程示意图;
图4是本申请实施例提供的数据缓存装置的示意性框图;
图5是本申请实施例提供的序列化确定单元的示意性框图;
图6是本申请实施例提供的缓存确定单元的示意性框图;
图7是本申请实施例提供的一种计算机设备的示意性框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图1是本申请实施例提供的数据缓存方法的流程示意图。如图1所示,该方法包括S101-S105。
S101,获取业务场景的待缓存数据。
其中,业务场景是为了满足企业的需求而对应的一些应用场景。待缓存数据是根据具体业务场景所得到的数据。如在购物相关的应用程序中,用户以关键词“护肤品”来进行查询,则查询出来的包含有护肤品的所有商品即为待缓存数据。
S102,根据所述业务场景和所述待缓存数据的特征确定所述待缓存数据所对应的序列化方式。
Redis是一个key-value数据库,在面向对象程序设计中,使用Redis缓存对象时需要将其序列化。其中,序列化实际上就是将对象以字节形式存储。这样,不管对象的属性是字符串、整型还是图片、视频等二进制类型,都可以将其保存在字节数组中。对象序列化后便可以持久化保存或网络传输。需要还原对象时,只需将字节数组再反序列化即可。也可以简单的理解为,序列化是保存/存储对象的过程,反序列化是取出对象的过程。如想要存数据A=1,实际上存的是A=fx序列化(1);若想要取出,是取出fx反序列化(fx序列化(1))。如以关键词“护肤品”进行查询,则查询出来的护肤品就会按照:护肤品=fx序列化(查询出来包含有护肤品的商品)方式进行存储。
其中,序列化方式包括Kryo、Hessian、Protostuff、Java等。其中,Kryo是一个快速高效的Java对象图形序列化框架,主要特点是性能、高效和易用。该框架用来序列化对象到文件、数据库或者网络。Hessian是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能。Hessian采用的是二进制RPC协议,因为采用的是二进制协议,所以它很适合于发送二进制数据。Protostuff是一个开源的、基于Java语言的序列化库,它内建支持向前向后兼容(模式演进)和验证功能。
Kryo、Hessian、Protostuff、Java等序列化方式的优缺点如下表1所示。其中,序列化框架Kryo、Hessian、Protostuff、Java等分别实现Kryo、Hessian、Protostuff、Java等序列化方式。
表1多种序列化方式的优缺点比较
在一实施例中,待缓存数据的特征包括待缓存数据对象的大小、待缓存数据对象的访问频率等。如图2所示,步骤S102包括以下步骤S201-S205。
S201,获取所述业务场景中的待缓存数据对象,其中,所述待缓存数据对象为所述待缓存数据所对应的对象。
S202,判断是否可以通过非Java序列化方式将所述待缓存数据对象进行序列化。具体地,获取所述待缓存数据对象所对应的类,判断该缓存数据对象所对应的类是否是可以通过非Java序列化方式来进行序列化的类;若是,则确定可以通过非Java序列化方式将所述待缓存数据对象进行序列化,否则,则确定不可以通过非Java序列化方式将所述待缓存数据对象进行序列化。其中,每种序列化方式都对应有可以序列化的类,通过类可以生成类对象,如Java可以序列化所有类对象。
S203,若确定可以通过非Java序列化方式将所述待缓存数据对象进行序列化,获取计算出的所述待缓存数据对象的大小以及预估出的所述待缓存数据对象在所述业务场景中的访问频率。
其中,计算待缓存数据对象的大小,包括:获取待缓存数据对象中各个属性的属性信息;计算各个属性的属性信息所占用的字节数;根据各个属性的属性信息所占用的字节数计算所述待缓存数据对象所占用的字节数,将所述待缓存数据对象所占用的字节数作为所述待缓存数据对象的大小。
其中,待缓存数据对象中可能有一条数据/多条数据,每条数据对应有很多的属性,获取每条数据所对应的属性信息。可以理解地,每条数据都包括了所有属性的属性信息,即各个属性的属性信息。如查询出来包含有护肤品的商品有多条数据,每条数据包括商品名称、商品所属公司、商品价格、商品类别、商品功能等属性。属性的属性信息包括数据类型、属性名、属性值等信息,如属性名“商品类别”,数据类型为char,属性值为“面霜”。计算各个属性的属性信息所占用的字节数,即计算待缓存数据中一条数据所占用的字节数。根据各个属性的属性信息所占用的字节数计算所述待缓存数据对象所占用的字节数,即获取待缓存数据对象的所有条数信息,根据所有条数乘以每一条数据所占用的字节数,即可得出待缓存数据对象的所占用的字节数。若各个属性的属性信息显示在一行中,那么待缓存数据对象的所占用的字节数即为待缓存数据对象的所有行数乘以每一行所占用的字节数。主要注意的是,如此计算出的待缓存数据对象所占用的字节数并不是真正的待缓存数据对象的实际大小,只是对待缓存数据对象大小的预估。
待缓存数据对象在所述业务场景中的访问频率,可以根据业务场景和历史访问频率数据进行预估。如若该业务场景中,存在历史访问频率数据,根据目前的业务状态,可将待缓存数据对象的访问频率设置为与历史访问频率数据相同或者大于历史访问频率数据等。若没有历史数据,那么直接根据业务场景进行预估或者设置预设的访问频率作为待缓存数据对象在该业务场景中的访问频率。预估后或者设置后得到的该待缓存数据对象在该业务场景中的访问频率,可以进行归一化,以便于进一步的分析。
S204,根据所述待缓存数据对象的大小、所述待缓存数据对象在所述业务场景中的访问频率确定所述业务场景中的所述待缓存数据的序列化方式。具体地,判断该待缓存数据对象的大小是否超过预设数据量,若超过预设数据量,确定序列化方式为Kryo;若待缓存数据对象的大小不超过预设数据量,判断缓存数据对象的访问频率是否超过预设频率,若超过预设频率,确定序列化方式为protobuf,否则,确定序列化方式为Kryo或者Hessian等。可以理解地,对于一些数据量较大的数据,使用kryo来序列化并进行存储;对于一些常用的但是数据量不是很大的数据,可以使用protobuf来序列化。
S205,若确定不可以通过非Java序列化方式将所述待缓存数据对象进行序列化,确定所述业务场景中的所述待缓存数据的序列化方式为Java序列化方式。当确定不可以通过非Java序列化方式将该待缓存数据对象进行序列化时,由于Java序列化方式可以序列化所有的类,因此采用Java序列化方式进行序列化。
根据业务场景和待缓存数据的特征来确定该业务场景中的待缓存数据的序列化方式,如此不同的业务场景可以设置匹配的序列化方式,即序列化方式的设置可以匹配不同的业务场景,满足不同业务场景的需求,如此可提高序列化的效率以及数据缓存的效率。
S103,根据所述业务场景确定所述待缓存数据所对应的缓存策略。
其中,缓存策略包括FIFO、LRU、LFU等算法实现的缓存策略。其中,FIFO(FirstInFirst out,先进先出)算法:淘汰最先放到Redis进行缓存的数据,最新放在Redis进行缓存的数据最迟被淘汰,符合队列的规则。LRU(Least recentlyused,最近最少使用)算法根据缓存数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”,淘汰最近不使用的缓存数据。LFU(LeastFrequentlyUsed,最近使用次数最少)算法根据数据的历史访问频率来淘汰数据,其核心思想是“如果数据过去被访问多次,那么将来被访问的频率也更高”,淘汰使用次数最少的缓存数据。
在一实施例中,步骤S103,包括:根据所述业务场景和所述待缓存数据的特征确定该待缓存数据所对应的缓存策略。其中,待缓存数据的特征包括待缓存数据对象的大小、待缓存数据对象的访问频率等。具体地,根据所述业务场景和所述待缓存数据的特征确定所述待缓存数据所对应的缓存策略,包括:获取计算出的所述待缓存数据对象的大小以及预估出的所述待缓存数据对象在所述业务场景中的访问频率;根据所述待缓存数据对象的大小、所述待缓存数据对象在所述业务场景中的访问频率确定所述待缓存数据的缓存策略。其中,所述待缓存数据对象的大小、所述待缓存数据对象在所述业务场景中的访问频率的确定方法请参看图2实施例的描述,在此不再赘述。
具体地,若预估出的该待缓存数据对象在该业务场景中的访问频率高于第一预设频率,则使用LFU算法实现的缓存策略;若预估出的该待缓存数据对象在该业务场景中的访问频率低于第一预设频率且高于第二预设频率,同时待缓存数据对象的大小小于预设大小,则使用LRU算法实现的缓存策略;若预估出的该待缓存数据对象在该业务场景中的访问频率低于第二预设频率,同时待缓存数据对象的大小大于预设大小,则使用FIFO算法实现的缓存策略。需要注意的是,该种确定缓存策略的方式只是示例,在其他实施例中,可使用其他合适的方法。
在一实施例中,步骤S103包括:获取预先保存的业务场景与缓存策略的对应关系;根据所述对应关系确定所述业务场景中的待缓存数据所对应的缓存策略。在一实施例中,在所述获取预先保存的业务场景与缓存策略的对应关系之前,步骤S103还包括:设置业务场景与缓存策略的对应关系。
图3是本申请实施例提供的数据缓存方法的子流程示意图。如图3所示,步骤S103包括以下步骤S301-S306。其中,设置业务场景与缓存策略的对应关系通过步骤S301-S304来实现的。
S301,对于不同业务场景,分别设置不同缓存策略,以监控在不同业务场景中,不同缓存策略所对应的缓存数据访问请求次数以及不同缓存策略所对应的缓存命中次数。可以理解地,对于每一个业务场景,分别设置不同缓存策略,以监控在该业务场景中,不同缓存策略所对应的缓存数据访问请求次数以及不同缓存策略所对应的缓存命中次数。
S302,根据所述缓存数据访问请求次数和所述缓存命中次数计算缓存命中率。其中,缓存命中率=缓存命中次数/缓存数据访问请求次数。
S303,根据计算出的缓存命中率确定不同业务场景中所对应的缓存策略。具体地,选择缓存命中率最高的缓存策略作为该业务场景中所对应的缓存策略。
S304,保存不同业务场景与确定的缓存策略之间的对应关系。即保存不同业务场景中与不同业务场景中所确定的缓存策略之间的对应关系。
S305,获取预先保存的不同业务场景与缓存策略之间的对应关系。
S306,根据所述对应关系确定所述业务场景中的待缓存数据所对应的缓存策略。即在保存的对应关系中,查找该业务场景,根据该业务场景确定与该业务场景对应的缓存策略,将该对应的缓存策略作为业务场景中的待缓存数据所对应的缓存策略。
该实施例从预先保存的业务场景与缓存策略的对应关系中确定该业务场景中的待缓存数据所对应的缓存策略,该种确定待缓存数据所对应的缓存策略的方式适用于业务场景用户的行为特征变化不大,以及用户数量变化不大的情况下。可以理解为,业务场景用户的行为特征变化不大,以及用户数量变化不大的情况下,预先保存的业务场景与缓存策略的对应关系才会相对保持不变,才具有有效性。
步骤S103所对应的实施例实现了多种缓存策略,并根据业务场景来确定该业务场景中的待缓存数据的缓存策略,如此不同的业务场景可以设置匹配的缓存策略,满足不同业务场景的需求,提高缓存的命中率。
S104,配置序列化方式和缓存策略。
在一实施例中,步骤S104包括:在配置文件中查找序列化方式和缓存策略所对应的参数;将序列化方式和缓存策略所对应的参数值替换为确定后的序列化方式和缓存策略。
其中,序列化方式和缓存策略所对应的参数可以分别称为序列化参数和缓存参数。序列化参数和缓存参数可以保存在配置文件中。序列化参数和缓存参数可以以普通的参数形式存在,也可以以注解的方式存在。若以注解的方式存在,对应的,在需进行序列化和需缓存的地方,加上配置好的注解,如此自动进行序列化和进行缓存。
在配置序列化方式和缓存策略时,无需任何手动操作,即只需要进行简单的配置即可切换和使用各种序列化方式,以及使用各种缓存策略,提高了设置序列化方式和缓存策略的效率。
S105,当接收到缓存指令,根据配置后的序列化方式将所述待缓存数据,按照配置后的缓存策略保存至缓存数据库中。
其中,缓存数据库可以是Redis数据库等。
以上实施例根据不同的业务场景和不同待缓存数据的特征来确定待缓存数据所对应的序列化方式以及根据不同的业务场景确定对应的缓存策略,实现了多业务场景适配,即可在不同的业务场景中选择匹配的序列化方式和匹配缓存策略,且只需要进行简单的配置即可使用各种序列化方式和各种缓存策略。如此提高了序列化效率、数据缓存的效率以及数据查询的效率,从而提高了用户的体验。
图4是本申请实施例提供的数据缓存装置的示意性框图。该装置包括用于执行上述数据缓存方法所对应的单元。如图4所示,该装置40包括获取单元401、序列化确定单元402、缓存确定单元403、配置单元404以及数据缓存单元405。
获取单元401,用于获取业务场景的待缓存数据。
序列化确定单元402,用于根据所述业务场景和所述待缓存数据的特征确定所述待缓存数据所对应的序列化方式。
在一实施例中,待缓存数据的特征包括待缓存数据对象的大小、待缓存数据对象的访问频率等。如图5所示,序列化确定单元402包括:对象获取单元501、判断单元502、第一获取单元503、序列化方式确定单元504。其中,对象获取单元501,用于获取所述业务场景中的待缓存数据对象,其中,所述待缓存数据对象为所述待缓存数据所对应的对象。判断单元502,用于判断是否可以通过非Java序列化方式将所述待缓存数据对象进行序列化。第一获取单元503,用于若确定可以通过非Java序列化方式将所述待缓存数据对象进行序列化,获取计算出的所述待缓存数据对象的大小以及预估出的所述待缓存数据对象在所述业务场景中的访问频率。序列化方式确定单元504,用于根据所述待缓存数据对象的大小、所述待缓存数据对象在所述业务场景中的访问频率确定所述待缓存数据的序列化方式,以及用于若确定不可以通过非Java序列化方式将所述待缓存数据对象进行序列化,确定所述待缓存数据的序列化方式为Java序列化方式。
在一实施例中,序列化确定单元402还包括:计算单元505。其中,计算单元包括505包括属性获取单元、属性计算单元以及对象大小确定单元。其中,属性获取单元,用于获取待缓存数据对象中各个属性的属性信息。属性计算单元,用于计算各个属性的属性信息所占用的字节数。对象大小确定单元,用于根据各个属性的属性信息所占用的字节数计算所述待缓存数据对象所占用的字节数,将所述待缓存数据对象所占用的字节数作为所述待缓存数据对象的大小。
缓存确定单元403,用于根据所述业务场景确定所述待缓存数据所对应的缓存策略。
在一实施例中,缓存确定单元403用于根据所述业务场景和所述待缓存数据的特征确定该待缓存数据所对应的缓存策略。其中,待缓存数据的特征包括待缓存数据对象的大小、待缓存数据对象的访问频率等。具体地,缓存确定单元403包括:第二获取单元以及第一缓存确定单元。其中,第二获取单元,用于获取计算出的所述待缓存数据对象的大小以及预估出的所述待缓存数据对象在所述业务场景中的访问频率。第一缓存确定单元,用于根据所述待缓存数据对象的大小、所述待缓存数据对象在所述业务场景中的访问频率确定所述待缓存数据的缓存策略。
在一实施例中,缓存确定单元403,包括对应关系获取单元以及第二缓存确定单元。其中,对应关系获取单元,用于获取预先保存的不同业务场景与缓存策略之间的对应关系。第二缓存确定单元,用于根据所述对应关系确定所述业务场景中的待缓存数据所对应的缓存策略。在一实施例中,缓存确定单元403还包括设置单元。该设置单元,用于设置业务场景与缓存策略的对应关系。
在一实施例中,如图6所示,缓存确定单元403,包括:设置监控单元601、命中率计算单元602、缓存策略确定单元603、保存单元604、对应关系获取单元605以及第二缓存确定单元606。其中,设置监控单元601,用于对于不同业务场景,分别设置不同缓存策略,以监控在不同业务场景中,不同缓存策略所对应的缓存数据访问请求次数以及不同缓存策略所对应的缓存命中次数。命中率计算单元,用于根据所述缓存数据访问请求次数和所述缓存命中次数计算缓存命中率。缓存策略确定单元,用于根据计算出的缓存命中率确定不同业务场景中所对应的缓存策略。保存单元,用于保存不同业务场景与确定的缓存策略之间的对应关系。对应关系获取单元,用于获取预先保存的不同业务场景与缓存策略之间的对应关系。第二缓存确定单元,用于根据所述对应关系确定所述业务场景中的待缓存数据所对应的缓存策略。
配置单元404,用于配置序列化方式和缓存策略。
在一实施例中,配置单元404,包括:查找单元、替换单元。其中,查找单元,用于在配置文件中查找序列化方式和缓存策略所对应的参数;替换单元,用于将序列化方式和缓存策略所对应的参数值替换为确定后的序列化方式和缓存策略。
匹配转换单元405,用于当接收到缓存指令,根据配置后的序列化方式将所述待缓存数据,按照配置后的缓存策略保存至缓存数据库中。
需要说明的是,所属领域的技术人员可以清楚地了解到,上述装置和各单元的具体实现过程,可以参考前述方法实施例中的相应描述,为了描述的方便和简洁,在此不再赘述。
上述装置可以实现为一种计算机程序的形式,计算机程序可以在如图7所示的计算机设备上运行。
图7为本申请实施例提供的一种计算机设备的示意性框图。该设备70包括通过***总线701连接的处理器702、存储器和网络接口703,其中,存储器可以包括非易失性存储介质704和内存储器705。
该非易失性存储介质704可存储操作***7041和计算机程序7042。该非易失性存储介质中所存储的计算机程序7042被处理器702执行时,可实现上述所述的数据缓存方法。该处理器702用于提供计算和控制能力,支撑整个设备70的运行。该内存储器705为非易失性存储介质中的计算机程序的运行提供环境,该计算机程序被处理器702执行时,可使得处理器702执行上述所述的数据缓存方法。该网络接口703用于进行网络通信。本领域技术人员可以理解,图7中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的设备70的限定,具体的设备70可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
其中,所述处理器702用于运行存储在存储器中的计算机程序,以实现如下步骤:
获取业务场景的待缓存数据;根据所述业务场景和所述待缓存数据的特征确定所述待缓存数据所对应的序列化方式;根据所述业务场景确定所述待缓存数据所对应的缓存策略;配置序列化方式和缓存策略;当接收到缓存指令,根据配置后的序列化方式将所述待缓存数据,按照配置后的缓存策略保存至缓存数据库中。
在一实施例中,所述处理器702在执行所述根据所述业务场景和所述待缓存数据的特征确定所述待缓存数据所对应的序列化方式时,具体实现如下步骤:
获取所述业务场景中的待缓存数据对象,其中,所述待缓存数据对象为所述待缓存数据所对应的对象;判断是否可以通过非Java序列化方式将所述待缓存数据对象进行序列化;若确定可以通过非Java序列化方式将所述待缓存数据对象进行序列化,获取计算出的所述待缓存数据对象的大小以及预估出的所述待缓存数据对象在所述业务场景中的访问频率;根据所述待缓存数据对象的大小、所述待缓存数据对象在所述业务场景中的访问频率确定所述待缓存数据的序列化方式;若确定不可以通过非Java序列化方式将所述待缓存数据对象进行序列化,确定所述待缓存数据的序列化方式为Java序列化方式。
在一实施例中,所述处理器702在执行所述根据所述业务场景确定所述待缓存数据所对应的缓存策略时,具体实现如下步骤:
获取计算出的所述待缓存数据对象的大小以及预估出的所述待缓存数据对象在所述业务场景中的访问频率;根据所述待缓存数据对象的大小、所述待缓存数据对象在所述业务场景中的访问频率确定所述待缓存数据的缓存策略。
在一实施例中,所述处理器702在执行所述获取计算出的所述待缓存数据对象的大小之前,还具体执行:计算所述待缓存数据对象的大小;所述处理器702在执行所述计算所述待缓存数据对象的大小时,具体实现如下步骤:
获取待缓存数据对象中各个属性的属性信息;计算各个属性的属性信息所占用的字节数;根据各个属性的属性信息所占用的字节数计算所述待缓存数据对象所占用的字节数,将所述待缓存数据对象所占用的字节数作为所述待缓存数据对象的大小。
在一实施例中,所述处理器702在执行所述根据所述业务场景确定所述待缓存数据所对应的缓存策略时,具体实现如下步骤:
获取预先保存的不同业务场景与缓存策略之间的对应关系;根据所述对应关系确定所述业务场景中的待缓存数据所对应的缓存策略。
在一实施例中,所述处理器702在执行所述获取预先保存的不同业务场景与缓存策略之间的对应关系之前,还具体实现如下步骤:
对于不同业务场景,分别设置不同缓存策略,以监控在不同业务场景中,不同缓存策略所对应的缓存数据访问请求次数以及不同缓存策略所对应的缓存命中次数;根据所述缓存数据访问请求次数和所述缓存命中次数计算缓存命中率;根据计算出的缓存命中率确定不同业务场景中所对应的缓存策略;保存不同业务场景与确定的缓存策略之间的对应关系。
在一实施例中,所述处理器702在执行所述配置序列化方式和缓存策略时,具体实现如下步骤:
在配置文件中查找序列化方式和缓存策略所对应的参数;将序列化方式和缓存策略所对应的参数值替换为确定后的序列化方式和缓存策略。
应当理解,在本申请实施例中,所称处理器702可以是中央处理单元(CentralProcessing Unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(应用程序lication Specific IntegratedCircuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
本领域普通技术人员可以理解的是实现上述实施例的方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成。该计算机程序可存储于一存储介质中,该存储介质可以为计算机可读存储介质。该计算机程序被该计算机***中的至少一个处理器执行,以实现上述方法的实施例的流程步骤。
因此,本申请还提供了一种存储介质,所述存储介质存储有计算机程序,所述计算机程序当被处理器执行时实现以下步骤:
获取业务场景的待缓存数据;根据所述业务场景和所述待缓存数据的特征确定所述待缓存数据所对应的序列化方式;根据所述业务场景确定所述待缓存数据所对应的缓存策略;配置序列化方式和缓存策略;当接收到缓存指令,根据配置后的序列化方式将所述待缓存数据,按照配置后的缓存策略保存至缓存数据库中。
在一实施例中,所述处理器在执行所述根据所述业务场景和所述待缓存数据的特征确定所述待缓存数据所对应的序列化方式时,具体实现如下步骤:
获取所述业务场景中的待缓存数据对象,其中,所述待缓存数据对象为所述待缓存数据所对应的对象;判断是否可以通过非Java序列化方式将所述待缓存数据对象进行序列化;若确定可以通过非Java序列化方式将所述待缓存数据对象进行序列化,获取计算出的所述待缓存数据对象的大小以及预估出的所述待缓存数据对象在所述业务场景中的访问频率;根据所述待缓存数据对象的大小、所述待缓存数据对象在所述业务场景中的访问频率确定所述待缓存数据的序列化方式;若确定不可以通过非Java序列化方式将所述待缓存数据对象进行序列化,确定所述待缓存数据的序列化方式为Java序列化方式。
在一实施例中,所述处理器在执行所述根据所述业务场景确定所述待缓存数据所对应的缓存策略时,具体实现如下步骤:
获取计算出的所述待缓存数据对象的大小以及预估出的所述待缓存数据对象在所述业务场景中的访问频率;根据所述待缓存数据对象的大小、所述待缓存数据对象在所述业务场景中的访问频率确定所述待缓存数据的缓存策略。
在一实施例中,所述处理器在执行所述获取计算出的所述待缓存数据对象的大小之前,还具体实现:计算所述待缓存数据对象的大小;所述处理器在执行所述计算所述待缓存数据对象的大小时,具体实现如下步骤:
获取待缓存数据对象中各个属性的属性信息;计算各个属性的属性信息所占用的字节数;根据各个属性的属性信息所占用的字节数计算所述待缓存数据对象所占用的字节数,将所述待缓存数据对象所占用的字节数作为所述待缓存数据对象的大小。
在一实施例中,所述处理器在执行所述根据所述业务场景确定所述待缓存数据所对应的缓存策略时,具体实现如下步骤:
获取预先保存的不同业务场景与缓存策略之间的对应关系;根据所述对应关系确定所述业务场景中的待缓存数据所对应的缓存策略。
在一实施例中,所述处理器在执行所述获取预先保存的不同业务场景与缓存策略之间的对应关系之前,还具体实现如下步骤:
对于不同业务场景,分别设置不同缓存策略,以监控在不同业务场景中,不同缓存策略所对应的缓存数据访问请求次数以及不同缓存策略所对应的缓存命中次数;根据所述缓存数据访问请求次数和所述缓存命中次数计算缓存命中率;根据计算出的缓存命中率确定不同业务场景中所对应的缓存策略;保存不同业务场景与确定的缓存策略之间的对应关系。
在一实施例中,所述处理器在执行所述配置序列化方式和缓存策略时,具体实现如下步骤:
在配置文件中查找序列化方式和缓存策略所对应的参数;将序列化方式和缓存策略所对应的参数值替换为确定后的序列化方式和缓存策略。
所述存储介质可以是U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的计算机可读存储介质。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置、设备和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的装置、设备和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种数据缓存方法,其特征在于,所述方法包括:
获取业务场景的待缓存数据;
根据所述业务场景和所述待缓存数据的特征确定所述待缓存数据所对应的序列化方式;
根据所述业务场景确定所述待缓存数据所对应的缓存策略;
配置序列化方式和缓存策略;
当接收到缓存指令,根据配置后的序列化方式将所述待缓存数据,按照配置后的缓存策略保存至缓存数据库中。
2.根据权利要求1所述的方法,其特征在于,所述根据所述业务场景和所述待缓存数据的特征确定所述待缓存数据所对应的序列化方式,包括:
获取所述业务场景中的待缓存数据对象,其中,所述待缓存数据对象为所述待缓存数据所对应的对象;
判断是否可以通过非Java序列化方式将所述待缓存数据对象进行序列化;
若确定可以通过非Java序列化方式将所述待缓存数据对象进行序列化,获取计算出的所述待缓存数据对象的大小以及预估出的所述待缓存数据对象在所述业务场景中的访问频率;
根据所述待缓存数据对象的大小、所述待缓存数据对象在所述业务场景中的访问频率确定所述待缓存数据的序列化方式;
若确定不可以通过非Java序列化方式将所述待缓存数据对象进行序列化,确定所述待缓存数据的序列化方式为Java序列化方式。
3.根据权利要求1所述的方法,其特征在于,所述根据所述业务场景确定所述待缓存数据所对应的缓存策略,包括:
获取计算出的所述待缓存数据对象的大小以及预估出的所述待缓存数据对象在所述业务场景中的访问频率;
根据所述待缓存数据对象的大小、所述待缓存数据对象在所述业务场景中的访问频率确定所述待缓存数据的缓存策略。
4.根据权利要求2-3任一项所述的方法,其特征在于,计算所述待缓存数据对象的大小,包括:
获取待缓存数据对象中各个属性的属性信息;
计算各个属性的属性信息所占用的字节数;
根据各个属性的属性信息所占用的字节数计算所述待缓存数据对象所占用的字节数,将所述待缓存数据对象所占用的字节数作为所述待缓存数据对象的大小。
5.根据权利要求1所述的方法,其特征在于,所述根据所述业务场景确定所述待缓存数据所对应的缓存策略,包括:
获取预先保存的不同业务场景与缓存策略之间的对应关系;
根据所述对应关系确定所述业务场景中的待缓存数据所对应的缓存策略。
6.根据权利要求5所述的方法,其特征在于,在所述获取预先保存的业务场景与缓存策略的对应关系之前,所述方法还包括:
对于不同业务场景,分别设置不同缓存策略,以监控在不同业务场景中,不同缓存策略所对应的缓存数据访问请求次数以及不同缓存策略所对应的缓存命中次数;
根据所述缓存数据访问请求次数和所述缓存命中次数计算缓存命中率;
根据计算出的缓存命中率确定不同业务场景中所对应的缓存策略;
保存不同业务场景与确定的缓存策略之间的对应关系。
7.根据权利要求1所述的方法,其特征在于,所述配置序列化方式和缓存策略,包括:
在配置文件中查找序列化方式和缓存策略所对应的参数;
将序列化方式和缓存策略所对应的参数值替换为确定后的序列化方式和缓存策略。
8.一种数据缓存装置,其特征在于,所述数据缓存装置包括:
获取单元,用于获取业务场景的待缓存数据;
序列化确定单元,用于根据所述业务场景和所述待缓存数据的特征确定所述待缓存数据所对应的序列化方式;
缓存确定单元,用于根据所述业务场景确定所述待缓存数据所对应的缓存策略;
配置单元,用于配置序列化方式和缓存策略;
数据缓存单元,用于当接收到缓存指令,根据配置后的序列化方式将所述待缓存数据,按照配置后的缓存策略保存至缓存数据库中。
9.一种计算机设备,其特征在于,所述计算机设备包括存储器,以及与所述存储器相连的处理器;
所述存储器用于存储计算机程序;所述处理器用于运行所述存储器中存储的计算机程序,以执行如权利要求1-7任一项所述的方法。
10.一种存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时,实现如权利要求1-7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811122026.8A CN109446225B (zh) | 2018-09-26 | 2018-09-26 | 数据缓存方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811122026.8A CN109446225B (zh) | 2018-09-26 | 2018-09-26 | 数据缓存方法、装置、计算机设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109446225A true CN109446225A (zh) | 2019-03-08 |
CN109446225B CN109446225B (zh) | 2023-04-14 |
Family
ID=65544512
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811122026.8A Active CN109446225B (zh) | 2018-09-26 | 2018-09-26 | 数据缓存方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109446225B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111708958A (zh) * | 2020-06-12 | 2020-09-25 | 中国工商银行股份有限公司 | 一种多键值缓存存储方法、装置及*** |
CN111930531A (zh) * | 2020-07-01 | 2020-11-13 | 北京奇艺世纪科技有限公司 | 数据处理、数据生产、数据消费方法、装置、设备及介质 |
CN113704308A (zh) * | 2021-09-02 | 2021-11-26 | 中国联合网络通信集团有限公司 | 数据缓存方法、装置、服务器及充值*** |
CN113836177A (zh) * | 2020-06-23 | 2021-12-24 | 易保网络技术(上海)有限公司 | 消耗型业务数据的缓存管理 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106775638A (zh) * | 2016-11-22 | 2017-05-31 | 北京皮尔布莱尼软件有限公司 | 一种对象序列化方法、装置和计算设备 |
CN107992432A (zh) * | 2017-11-28 | 2018-05-04 | 福建中金在线信息科技有限公司 | 一种数据缓存的方法及终端设备 |
-
2018
- 2018-09-26 CN CN201811122026.8A patent/CN109446225B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106775638A (zh) * | 2016-11-22 | 2017-05-31 | 北京皮尔布莱尼软件有限公司 | 一种对象序列化方法、装置和计算设备 |
CN107992432A (zh) * | 2017-11-28 | 2018-05-04 | 福建中金在线信息科技有限公司 | 一种数据缓存的方法及终端设备 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111708958A (zh) * | 2020-06-12 | 2020-09-25 | 中国工商银行股份有限公司 | 一种多键值缓存存储方法、装置及*** |
CN111708958B (zh) * | 2020-06-12 | 2024-04-12 | 中国工商银行股份有限公司 | 一种多键值缓存存储方法、装置及*** |
CN113836177A (zh) * | 2020-06-23 | 2021-12-24 | 易保网络技术(上海)有限公司 | 消耗型业务数据的缓存管理 |
CN113836177B (zh) * | 2020-06-23 | 2023-05-05 | 易保网络技术(上海)有限公司 | 消耗型业务数据的缓存管理 |
CN111930531A (zh) * | 2020-07-01 | 2020-11-13 | 北京奇艺世纪科技有限公司 | 数据处理、数据生产、数据消费方法、装置、设备及介质 |
CN111930531B (zh) * | 2020-07-01 | 2023-08-18 | 北京奇艺世纪科技有限公司 | 数据处理、数据生产、数据消费方法、装置、设备及介质 |
CN113704308A (zh) * | 2021-09-02 | 2021-11-26 | 中国联合网络通信集团有限公司 | 数据缓存方法、装置、服务器及充值*** |
CN113704308B (zh) * | 2021-09-02 | 2024-03-12 | 中国联合网络通信集团有限公司 | 数据缓存方法、装置、服务器及充值*** |
Also Published As
Publication number | Publication date |
---|---|
CN109446225B (zh) | 2023-04-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11586692B2 (en) | Streaming data processing | |
US20220327149A1 (en) | Dynamic partition allocation for query execution | |
US11615087B2 (en) | Search time estimate in a data intake and query system | |
US12007996B2 (en) | Management of distributed computing framework components | |
US11481396B2 (en) | Executing untrusted commands from a distributed execution model | |
US11321321B2 (en) | Record expansion and reduction based on a processing task in a data intake and query system | |
US11599541B2 (en) | Determining records generated by a processing task of a query | |
US11586627B2 (en) | Partitioning and reducing records at ingest of a worker node | |
US10795884B2 (en) | Dynamic resource allocation for common storage query | |
US11663227B2 (en) | Generating a subquery for a distinct data intake and query system | |
US11461334B2 (en) | Data conditioning for dataset destination | |
US11163758B2 (en) | External dataset capability compensation | |
US10726009B2 (en) | Query processing using query-resource usage and node utilization data | |
US11416528B2 (en) | Query acceleration data store | |
US11232100B2 (en) | Resource allocation for multiple datasets | |
US20190258631A1 (en) | Query scheduling based on a query-resource allocation and resource availability | |
US20190138642A1 (en) | Execution of a query received from a data intake and query system | |
CN109446225A (zh) | 数据缓存方法、装置、计算机设备及存储介质 | |
CN112527843B (zh) | 数据查询方法、装置、终端设备和存储介质 | |
US9514170B1 (en) | Priority queue using two differently-indexed single-index tables | |
US20110179013A1 (en) | Search Log Online Analytic Processing | |
CN110222046B (zh) | 列表数据的处理方法、装置、服务器和存储介质 | |
JP2019176381A (ja) | ブロックチェーンプログラム及びブロックチェーン方法 | |
CN108154024A (zh) | 一种数据检索方法、装置及电子设备 | |
US20060230236A1 (en) | Method and apparatus for precognitive fetching |
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 |