数据缓存方法、装置、计算机设备及存储介质制造方法及图纸

技术编号:20545833 阅读:19 留言:0更新日期:2019-03-09 18:46
本申请实施例提供一种数据缓存方法、装置、计算机设备及存储介质。所述方法包括:获取业务场景的待缓存数据;根据所述业务场景和所述待缓存数据的特征确定所述待缓存数据所对应的序列化方式;根据所述业务场景确定所述待缓存数据所对应的缓存策略;配置序列化方式和缓存策略;当接收到缓存指令,根据配置后的序列化方式将所述待缓存数据,按照配置后的缓存策略保存至缓存数据库中。本申请实施例提高了序列化效率、数据缓存的效率以及数据查询的效率,从而提高了用户的体验。

Data caching methods, devices, computer equipment and storage media

The embodiment of this application provides a data caching method, device, computer device and storage medium. The method includes: acquiring the data to be cached in the business scenario; determining the corresponding serialization mode of the data to be cached according to the business scenario and the characteristics of the data to be cached; determining the corresponding caching strategy of the data to be cached according to the business scenario; configuring the serialization mode and caching strategy; and receiving the caching instruction, serialization according to the configuration. The data to be cached is stored in the cached database according to the configured caching strategy. The embodiment of the application improves the efficiency of serialization, data caching and data query, thereby improving the user's experience.

【技术实现步骤摘要】
数据缓存方法、装置、计算机设备及存储介质
本申请涉及数据处理
,尤其涉及一种数据缓存方法、装置、计算机设备及存储介质。
技术介绍
在数据库技术中,有一项重要的技术是对缓存的使用。在数据库中,同一用户可能多次执行相同的查询语句或者不同用户可能执行相同的查询语句。为了提高查询效率,可以将用户的查询结果放入缓存中。当用户下一次再执行相同查询或者下一个用户执行相同查询时,就可以直接从缓存中获取数据,而不用到硬盘/数据库中的数据文件中去读取数据,也可以省去相关解析的工作。因为内存的运行速度要比硬盘/数据快的多。为此通过缓存机制,可以提高查询的效率。而对于Redis(RemoteDictionaryServer,远程数据服务)缓存数据库,缓存数据时需要将其序列化,然后再进行缓存。目前一般使用较多的是默认的序列化方式,即Java(JDK,JavaDevelopmentKit)的序列化方式,这种序列化方式的效率比较低,在反序列化的时候表现较差,从而导致用户的体验较差。
技术实现思路
本申请实施例提供一种数据缓存方法、装置、计算机设备及存储介质,可提高序列化效率和数据缓存以及数据查询的效率。第一方面,本申请实施例提供了一种数据缓存方法,该方法包括:获取业务场景的待缓存数据;根据所述业务场景和所述待缓存数据的特征确定所述待缓存数据所对应的序列化方式;确定所述待缓存数据所对应的缓存策略;配置序列化方式和缓存策略;当接收到缓存指令,根据配置后的序列化方式将所述待缓存数据,按照配置后的缓存策略保存至缓存数据库中。第二方面,本申请实施例提供了一种数据缓存装置,该装置包括用于执行上述第一方面所述的方法对应的单元。第三方面,本申请实施例提供了一种计算机设备,所述计算机设备包括存储器,以及与所述存储器相连的处理器;所述存储器用于存储计算机程序,所述处理器用于运行所述存储器中存储的计算机程序,以执行上述第一方面所述的方法。第四方面,本申请实施例提供了一种存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时,实现上述第一方面所述的方法。本申请实施例根据不同的业务场景和不同待缓存数据的特征来确定待缓存数据所对应的序列化方式以及根据不同的业务场景确定对应的缓存策略,实现了多业务场景适配,即可在不同的业务场景中选择匹配的序列化方式和匹配缓存策略,且只需要进行简单的配置即可使用各种序列化方式和各种缓存策略。如此提高了序列化效率、数据缓存的效率以及数据查询的效率,从而提高了用户的体验。附图说明为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图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是一个轻量级的remotingonhttp工具,使用简单的方法提供了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序列化方式将所述待缓存数据对象进行序列化,获取计算出的所述待缓存数据对象的大小以及预估出的所述待缓存数据对象在所述业务场景中的访问频率。其中,计算待缓存数据对象的大小,包括:获取待缓存数据对象中各个属性的属性信息;计算各个属性的属性信息所占用的字节数;根据各个属性的属性信息所占用的字节数计算所述待缓存数据对象所占用的字节数,将所述待缓存数据对象所占用的字节数作为所述待缓存数据对象的大小。其中,待缓存数据对象中可能有一条数据/多条数据,每条数据对应有很多的属性,获取每条数据所对应的属性信息。可以理本文档来自技高网...

【技术保护点】
1.一种数据缓存方法,其特征在于,所述方法包括:获取业务场景的待缓存数据;根据所述业务场景和所述待缓存数据的特征确定所述待缓存数据所对应的序列化方式;根据所述业务场景确定所述待缓存数据所对应的缓存策略;配置序列化方式和缓存策略;当接收到缓存指令,根据配置后的序列化方式将所述待缓存数据,按照配置后的缓存策略保存至缓存数据库中。

【技术特征摘要】
1.一种数据缓存方法,其特征在于,所述方法包括:获取业务场景的待缓存数据;根据所述业务场景和所述待缓存数据的特征确定所述待缓存数据所对应的序列化方式;根据所述业务场景确定所述待缓存数据所对应的缓存策略;配置序列化方式和缓存策略;当接收到缓存指令,根据配置后的序列化方式将所述待缓存数据,按照配置后的缓存策略保存至缓存数据库中。2.根据权利要求1所述的方法,其特征在于,所述根据所述业务场景和所述待缓存数据的特征确定所述待缓存数据所对应的序列化方式,包括:获取所述业务场景中的待缓存数据对象,其中,所述待缓存数据对象为所述待缓存数据所对应的对象;判断是否可以通过非Java序列化方式将所述待缓存数据对象进行序列化;若确定可以通过非Java序列化方式将所述待缓存数据对象进行序列化,获取计算出的所述待缓存数据对象的大小以及预估出的所述待缓存数据对象在所述业务场景中的访问频率;根据所述待缓存数据对象的大小、所述待缓存数据对象在所述业务场景中的访问频率确定所述待缓存数据的序列化方式;若确定不可以通过非Java序列化方式将所述待缓存数据对象进行序列化,确定所述待缓存数据的序列化方式为Java序列化方式。3.根据权利要求1所述的方法,其特征在于,所述根据所述业务场景确定所述待缓存数据所对应的缓存策略,包括:获取计算出的所述待缓存数据对象的大小以及预估出的所述待缓存数据对象在所述业务场景中的访问频率;根据所述待缓存数据对象的大小、所述待缓存数据对象在所述业务场景中的访问频率确定所述待缓存数据的缓存策略。4.根据权利要求2-3任一项所述的方法,其特征在于,计算所述待缓存数据对象的大小,包括:获取待缓存数据对象中各个属性的属性信息;计算各个属性的属性信息所占用的字节数;根据各个属性的属性信息所占用的字节数计算所述待缓存数据对象所占用的字节数,将所述待缓存数据对象所占用的字节数作为所述待缓存数据对象的大...

【专利技术属性】
技术研发人员:苏渊博
申请(专利权)人:平安科技深圳有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1