掌桥专利:专业的专利平台
掌桥专利
首页

一种数据缓存方法、加载方法、更新方法和相关装置

文献发布时间:2023-06-19 11:26:00


一种数据缓存方法、加载方法、更新方法和相关装置

技术领域

本发明涉及计算机技术领域,尤其涉及一种数据缓存方法、加载方法、更新方法和相关装置。

背景技术

现有的App(应用程序),例如支付管理类App,利用手机应用本地缓存技术在无网情况下向用户展示App基础内容。但是,现有技术在缓存数据的结构方面,一种方式是采用单一的实体对象结构,侧重对象属性的描述,不适用于结构复杂、整体性较强的业务数据,且对其中部分缓存数据进行更新时,对App运行性能消耗较大;另一种方式是根据数据变更频繁程度或者查询频率来对数据进行分类,在应用场景上具有一定的局限性。

在实现本发明过程中,发明人发现现有技术中至少存在如下问题:

无法满足App多样化数据的缓存、加载、更新需求,难以有效保证数据展示的实时性和准确性,对App运行性能消耗大,且应用场景上具有一定的局限性。

发明内容

有鉴于此,本发明实施例提供一种数据缓存方法、加载方法、更新方法和相关装置,能够满足App多样化数据的缓存、加载、更新需求,既实现了数据的分层缓存、加载和更新,又实现了不同层次数据的统一,方便数据的查找和读取,有效保证数据展示的实时性和准确性,并可加快App界面加载速度,提高App运行性能,且不受应用场景局限,可扩展性好。

为实现上述目的,根据本发明实施例的一个方面,提供了一种数据缓存方法。

一种数据缓存方法,包括:接收服务端发送的业务数据;根据所述业务数据的数据结构类型,从所述业务数据中得到总览数据和详情数据,所述总览数据包括用于查找所述详情数据的索引信息;将所述总览数据和所述详情数据缓存到不同的存储层级。

可选地,所述根据所述业务数据的数据结构类型,从所述业务数据中得到总览数据和详情数据,包括:基于所述业务数据中数组类型的数据,得到包括数组中各元素对象的所述总览数据,所述元素对象包括所述索引信息;以及,根据所述业务数据中数组元素类型的数据,得到与所述数组中每个所述元素对象对应的元素数据,作为所述详情数据。

可选地,所述将所述总览数据和所述详情数据缓存到不同的存储层级,包括:将所述总览数据缓存到第一存储层级;以及,将详情数据分为第一类型详情数据和第二类型详情数据,其中,所述第一类型详情数据为能同时满足分布界面数量条件和数据加载时限条件的详情数据,第二类型详情数据为不能同时满足所述分布界面数量条件和所述数据加载时限条件的详情数据;将所述第一类型详情数据和所述第二类型详情数据分别存储到第二存储层级的不同子层级。

可选地,根据所述业务数据的字段或来源接口,确定所述业务数据的数据结构类型,以及判断所述详情数据是否能同时满足所述分布界面数量条件和所述数据加载时限条件,所述来源接口为所述服务端提供所述业务数据的接口。

可选地,所述将所述总览数据和所述详情数据缓存到不同的存储层级之前,包括:对所述总览数据和所述详情数据进行序列化处理和/或加密处理。

根据本发明实施例的另一方面,提供了一种数据缓存方法。

一种数据缓存方法,包括:按照业务数据的数据结构类型存储业务数据,所述数据结构类型包括数组类型、数组元素类型,其中,将所述数组类型的业务数据存储为总览数据,将所述数组元素类型的业务数据存储为详情数据,所述总览数据包括用于查找所述详情数据的索引信息;将所述总览数据和所述详情数据发送到客户端,以由所述客户端进行缓存。

可选地,所述将所述数组元素类型的业务数据存储为详情数据,包括:将能同时满足分布界面数量条件和数据加载时限条件的详情数据存储为第一类型详情数据;以及,将不能同时满足所述分布界面数量条件和所述数据加载时限条件的详情数据存储为第二类型详情数据。

可选地,分别以不同字段集合中的字段对所述总览数据、所述第一类型详情数据、所述第二类型详情数据进行存储。

可选地,所述将所述总览数据和所述详情数据发送到客户端,包括:通过不同的接口发送所述总览数据、所述第一类型详情数据、所述第二类型详情数据。

根据本发明实施例的又一方面,提供了一种数据加载方法。

一种对利用本发明实施例的数据缓存方法缓存的数据进行加载的方法,包括:响应于收到的数据加载请求,从缓存中读取所述总览数据,并根据所述数据加载请求指定的元素信息,从所述总览数据中获取对应的所述索引信息;在所述缓存中查找与所述索引信息对应的所述详情数据,并在当前界面加载查找到的所述详情数据。

可选地,所述在所述缓存中查找与所述索引信息对应的所述详情数据,包括:从所述详情数据所在的存储层级中,查找与所述索引信息对应且与所述当前界面匹配的一种类型的所述详情数据。

可选地,所述总览数据还包括机构信息;所述方法还包括:根据所述机构信息获取对应机构的界面要素,并在所述当前界面加载所述界面要素。

根据本发明实施例的又一方面,提供了一种数据更新方法。

一种对利用本发明实施例的数据缓存方法缓存的数据进行更新的方法,包括:根据服务端发送的业务数据变动消息,确定缓存中的待更新数据以及更新方式,所述待更新数据包括所述总览数据和/或所述详情数据;按照所述更新方式,将所述待更新数据更新为所述服务端变动后的数据。

可选地,所述详情数据分为第一类型详情数据和第二类型详情数据,所述第一类型详情数据为能同时满足分布界面数量条件和数据加载时限条件的详情数据,第二类型详情数据为不能同时满足所述分布界面数量条件和所述数据加载时限条件的详情数据;在所述待更新数据为所述总览数据或所述第一类型详情数据的情况下,所述按照所述更新方式,将所述待更新数据更新为所述服务端变动后的数据,包括:通过全局广播的方式触发缓存数据更新程序,以立即向所述服务端请求所述变动后的数据,然后将所述待更新数据更新为所述变动后的数据;在所述待更新数据为所述第二类型详情数据的情况下,所述按照所述更新方式,将所述待更新数据更新为所述服务端变动后的数据,包括:待所述待更新数据通过界面展示时,向所述服务端请求所述变动后的数据,然后将所述待更新数据更新为所述变动后的数据。

可选地,从所述服务端的接口返回报文中获取所述业务数据变动消息,或者,通过与所述服务端建立长连接,接收所述服务端推送的所述业务数据变动消息。

根据本发明实施例的又一方面,提供了一种数据缓存装置。

一种数据缓存装置,包括:数据接收模块,用于接收服务端发送的业务数据;数据缓存模块,用于根据所述业务数据的数据结构类型,从所述业务数据中得到总览数据和详情数据,所述总览数据包括用于查找所述详情数据的索引信息;所述数据缓存模块还用于将所述总览数据和所述详情数据缓存到不同的存储层级。

可选地,所述数据缓存模块还用于:基于所述业务数据中数组类型的数据,得到包括数组中各元素对象的所述总览数据,所述元素对象包括所述索引信息;以及,根据所述业务数据中数组元素类型的数据,得到与所述数组中每个所述元素对象对应的元素数据,作为所述详情数据。

可选地,所述数据缓存模块还用于:将所述总览数据缓存到第一存储层级;以及,将所述详情数据分为第一类型详情数据和第二类型详情数据,其中,所述第一类型详情数据为能同时满足分布界面数量条件和数据加载时限条件的详情数据,第二类型详情数据为不能同时满足所述分布界面数量条件和所述数据加载时限条件的详情数据;将所述第一类型详情数据和所述第二类型详情数据分别存储到第二存储层级的不同子层级。

可选地,所述数据缓存模块根据所述业务数据的字段或来源接口,确定所述业务数据的数据结构类型,以及判断所述详情数据是否能同时满足所述分布界面数量条件和所述数据加载时限条件,所述来源接口为所述服务端提供所述业务数据的接口。

可选地,还包括数据处理模块,用于:对所述总览数据和所述详情数据进行序列化处理和/或加密处理。

根据本发明实施例的又一方面,提供了一种数据缓存装置。

一种数据缓存装置,包括:数据分层模块,用于按照业务数据的数据结构类型存储所述业务数据,所述数据结构类型包括数组类型、数组元素类型,其中,将所述数组类型的业务数据存储为总览数据,将所述数组元素类型的业务数据存储为详情数据,所述总览数据包括用于查找所述详情数据的索引信息;数据发送模块,用于将所述总览数据和所述详情数据发送到客户端,以由所述客户端进行缓存。

可选地,所述数据分层模块还用于:将能同时满足分布界面数量条件和数据加载时限条件的详情数据存储为第一类型详情数据;以及,将不能同时满足所述分布界面数量条件和所述数据加载时限条件的详情数据存储为第二类型详情数据。

可选地,所述数据分层模块分别以不同字段集合中的字段对所述总览数据、所述第一类型详情数据、所述第二类型详情数据进行存储。

可选地,所述数据发送模块通过不同的接口发送所述总览数据、所述第一类型详情数据、所述第二类型详情数据。

根据本发明实施例的又一方面,提供了一种数据加载装置。

一种对利用本发明实施例的数据缓存装置缓存的数据进行加载的装置,包括:数据读取模块,用于响应于收到的数据加载请求,从缓存中读取所述总览数据,并根据所述数据加载请求指定的元素信息,从所述总览数据中获取对应的所述索引信息;数据加载模块,用于在所述缓存中查找与所述索引信息对应的所述详情数据,并在当前界面加载查找到的所述详情数据。

可选地,所述数据加载模块还用于:从所述详情数据所在的存储层级中,查找与所述索引信息对应且与所述当前界面匹配的一种类型的所述详情数据。

可选地,所述总览数据还包括机构信息;所述装置还包括界面要素加载模块,用于:根据所述机构信息获取对应机构的界面要素,并在所述当前界面加载所述界面要素。

根据本发明实施例的又一方面,提供了一种数据更新装置。

一种对利用本发明实施例的数据缓存装置缓存的数据进行更新的装置,包括:待更新数据确定模块,用于根据服务端发送的业务数据变动消息,确定缓存中的待更新数据以及更新方式,所述待更新数据包括所述总览数据和/或所述详情数据;数据更新模块,用于按照所述更新方式,将所述待更新数据更新为所述服务端变动后的数据。

可选地,所述详情数据分为第一类型详情数据和第二类型详情数据,所述第一类型详情数据为能同时满足分布界面数量条件和数据加载时限条件的详情数据,第二类型详情数据为不能同时满足所述分布界面数量条件和所述数据加载时限条件的详情数据;在所述待更新数据为所述总览数据或所述第一类型详情数据的情况下,所述按照所述更新方式,将所述待更新数据更新为所述服务端变动后的数据,包括:通过全局广播的方式触发缓存数据更新程序,以立即向所述服务端请求所述变动后的数据,然后将所述待更新数据更新为所述变动后的数据;在所述待更新数据为所述第二类型详情数据的情况下,所述按照所述更新方式,将所述待更新数据更新为所述服务端变动后的数据,包括:待所述待更新数据通过界面展示时,向所述服务端请求所述变动后的数据,然后将所述待更新数据更新为所述变动后的数据。

可选地,还包括消息接收模块,用于从所述服务端的接口返回报文中获取所述业务数据变动消息,或者,通过与所述服务端建立长连接,接收所述服务端推送的所述业务数据变动消息。

根据本发明实施例的又一方面,提供了一种电子设备。

一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现本发明实施例所提供的数据缓存方法、数据加载方法、或数据更新方法。

根据本发明实施例的又一方面,提供了一种计算机可读介质。

一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明实施例所提供的数据缓存方法、数据加载方法、或数据更新方法。

上述发明中的一个实施例具有如下优点或有益效果:根据业务数据的数据结构类型,从业务数据中得到总览数据和详情数据,总览数据包括用于查找详情数据的索引信息,将总览数据和详情数据缓存到不同的存储层级,该实施例能够满足App多样化数据的缓存需求,既实现了数据的分层缓存又实现了不同层次数据的统一,方便数据的查找和读取,基于本发明实施例的数据缓存方法缓存数据,使得在进行数据加载时,能够分层加载,有效保证数据展示的实时性和准确性,并可加快App界面加载速度,提高App运行性能,且不受应用场景局限,可扩展性好,本发明实施例的数据更新方法,使得不同层次和类型的数据按照各自的更新策略更新,实现了数据的分层更新,也进一步保证了数据展示的实时性和准确性,加快了App界面加载速度,并可提高App运行性能。

上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。

附图说明

附图用于更好地理解本发明,不构成对本发明的不当限定。其中:

图1是根据本发明一个实施例的数据缓存方法的主要步骤示意图;

图2是根据本发明另一个实施例的数据缓存方法的主要步骤示意图;

图3是根据本发明一个实施例的数据加载方法的主要步骤示意图;

图4是根据本发明一个实施例的数据更新方法的主要步骤示意图;

图5是根据本发明一个实施例的实现数据缓存、加载和更新的系统结构示意图;

图6是根据本发明一个实施例的业务数据分层存储结构示意图;

图7是根据本发明一个实施例的数据加载流程示意图;

图8是根据本发明一个实施例的数据更新流程示意图;

图9是根据本发明一个实施例的数据缓存装置的主要模块示意图;

图10是根据本发明另一个实施例的数据缓存装置的主要模块示意图;

图11是根据本发明一个实施例的数据加载装置的主要模块示意图;

图12是根据本发明一个实施例的数据更新装置的主要模块示意图;

图13是本发明实施例可以应用于其中的示例性系统架构图;

图14是适于用来实现本发明实施例的终端设备或服务器的计算机系统的结构示意图。

具体实施方式

以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。

图1是根据本发明一个实施例的数据缓存方法的主要步骤示意图。

如图1所示,本发明一个实施例的数据缓存方法主要包括如下的步骤S101至步骤S103。本实施例的数据缓存方法可由客户端执行。

步骤S101:接收服务端发送的业务数据;

步骤S102:根据业务数据的数据结构类型,从业务数据中得到总览数据和详情数据,总览数据包括用于查找详情数据的索引信息;

步骤S103:将总览数据和详情数据缓存到不同的存储层级。

在接收服务端发送的业务数据之前,客户端可先向服务端请求业务数据,服务端收到请求后向客户端发送对应的业务数据。

客户端可以为安装在移动终端的App(应用程序)。

在一个实施例中,根据业务数据的数据结构类型,从业务数据中得到总览数据和详情数据,包括:基于业务数据中数组类型的数据,得到包括数组中各元素对象的总览数据,元素对象包括索引信息;以及,根据业务数据中数组元素类型的数据,得到与数组中每个元素对象对应的元素数据,作为详情数据。

数组类型的数据是指该数据是数组,其每个元素都是一个实体对象,即元素对象。数组元素类型的数据是指该数据是数组中元素对象对应的具体数据,即元素数据。

在一个实施例中,业务数据的数据结构类型与业务数据的字段或接口存在关联关系。数据结构类型与业务数据的字段或接口的关联关系可预先在服务端设定,客户端可以通过与服务端协商得到该关联关系。例如服务端可以设置数组类型的数据和数组元素类型的数据分别可以使用的字段或接口,并以规定的字段或通过规定的接口发送业务数据,从而客户端可以根据业务数据的字段或来源接口,确定业务数据的数据结构类型。

业务数据的来源接口是指服务端提供该业务数据的接口。

在一个实施例中,将总览数据和详情数据缓存到不同的存储层级,包括:将总览数据缓存到第一存储层级;以及,将详情数据分为第一类型详情数据和第二类型详情数据,其中,第一类型详情数据为能同时满足分布界面数量条件和数据加载时限条件的详情数据,第二类型详情数据为不能同时满足分布界面数量条件和数据加载时限条件的详情数据;将第一类型详情数据和第二类型详情数据分别存储到第二存储层级的不同子层级。

分布界面数量用于衡量业务数据在界面展示分布的广度,数据加载时限用于衡量业务数据的业务实时性要求。业务数据的分布界面数量越大,表示该业务数据在界面分布越广,业务数据的数据加载时限越低,表示该业务数据的业务实时性要求越高。

同时满足分布界面数量条件和数据加载时限条件的详情数据,通常是业务数据中界面分布广且业务实时性要求高的数据。若一数据的分布界面数量大于设定的分布界面数阈值,则其满足分布界面数量条件;若一数据的数据加载时限低于设定的加载时限阈值,则其满足数据加载时限条件。因此,同时满足分布界面数量条件和数据加载时限条件的详情数据为分布界面数量大于设定的分布界面数阈值,并且数据加载时限低于设定的加载时限阈值的详情数据,这类详情数据为第一类型详情数据。而仅满足分布界面数量条件和数据加载时限条件中的一个条件,或者任一条件都不满足的详情数据,则属于第二类型详情数据。

本发明实施例根据界面数据分布、数据实时准确性要求、数据结构类型特征,对应用程序中需要本地缓存的业务数据进行分层处理,对于数组类型的总览数据,将其缓存到第一存储层级;对于数组元素类型的详情数据,将其中界面分布广且业务实时性要求高的数据缓存到第二存储层级的某个子层级,以及将界面分布少和/或业务实时性要求不高的数据缓存到第二存储层级的另外子层级。并且,分层后的总览数据与详情数据采用元素索引的方式,将不同层次的数据统一起来,方便查找和读取,能够满足App多样化数据的缓存需求,进而使得在加载数据时,能够分层加载,有效保证数据展示的实时性和准确性,并可加快App界面加载速度,提高App运行性能,且不受应用场景局限,对于各种应用场景App业务数据均可适用,可扩展性好。

在一个实施例中,可以在服务端预先设置能同时满足分布界面数量条件和数据加载时限条件的数据可以使用的字段或接口,以及不能同时满足分布界面数量条件和数据加载时限条件的数据可以使用的字段或接口。客户端可以预先通过协商从服务端获取数据与字段或接口的这种对应关系,从而,客户端根据业务数据的字段或来源接口,可以判断业务数据是否能同时满足分布界面数量条件和数据加载时限条件,进而划分出第一类型详情数据、第二类型详情数据。

在一个实施例中,将总览数据和详情数据缓存到不同的存储层级之前,可以先对总览数据和详情数据进行序列化处理和/或加密处理。

图2是根据本发明另一个实施例的数据缓存方法的主要步骤示意图。

如图2所示,本发明另一个实施例的数据缓存方法主要包括如下的步骤S201至步骤S202。本实施例的数据缓存方法可在服务端执行。

步骤S201:按照业务数据的数据结构类型存储业务数据,数据结构类型包括数组类型、数组元素类型,其中,将数组类型的业务数据存储为总览数据,将数组元素类型的业务数据存储为详情数据,总览数据包括用于查找详情数据的索引信息;

步骤S202:将总览数据和详情数据发送到客户端,以由客户端进行缓存。

总览数据包括数组中各元素对象,元素对象包括索引信息;与数组中每个元素对象对应的元素数据作为详情数据。

在一个实施例中,将数组元素类型的业务数据存储为详情数据,包括:将能同时满足分布界面数量条件和数据加载时限条件的详情数据存储为第一类型详情数据;以及,将不能同时满足分布界面数量条件和数据加载时限条件的详情数据存储为第二类型详情数据。

在一个实施例中,服务端分别以不同字段集合中的字段对总览数据、第一类型详情数据、第二类型详情数据进行存储。即,总览数据、第一类型详情数据、第二类型详情数据分别有各自的字段集合,在存储上述各数据时服务端从相应的字段集合中取字段来进行存储,从而客户端根据业务数据的字段可以判断得到的详情数据的具体类型。

例如,服务端可以设置数组类型的数据和数组元素类型的数据分别可以使用的字段,并对于数组元素类型的数据中,能同时满足分布界面数量条件和数据加载时限条件的详情数据,以及不能同时满足分布界面数量条件和数据加载时限条件的详情数据再进一步分别规定所能使用的字段,进而使用规定的字段将业务数据存储为总览数据、第一类型详情数据或第二类型详情数据。从而客户端根据收到的业务数据的字段,可以确定业务数据的数据结构类型并判断详情数据是否能同时满足分布界面数量条件和数据加载时限条件。

在另一个实施例中,将总览数据和详情数据发送到客户端,包括:通过不同的接口发送总览数据、第一类型详情数据、第二类型详情数据,从而客户端根据数据的来源接口,可以确定数据的数据结构类型以及详情数据的具体类型。

例如,服务端可以设置数组类型的数据和数组元素类型的数据分别可以使用的接口,并通过规定的接口向客户端发送业务数据。对于数组元素类型的数据,服务端还可以进一步设置能同时满足分布界面数量条件和数据加载时限条件的数据可以使用的接口,以及不能同时满足分布界面数量条件和数据加载时限条件的数据可以使用的接口。从而客户端根据收到的业务数据的来源接口,可以确定业务数据的数据结构类型并判断详情数据是否能同时满足分布界面数量条件和数据加载时限条件。

关于分布界面数量条件和数据加载时限条件以及满足该两个条件的判断标准,可参见图1所示的实施例中的介绍。

图3是根据本发明一个实施例的数据加载方法的主要步骤示意图。

如图3所示,本发明一个实施例的数据加载方法主要包括如下的步骤S301至步骤S302。本实施例的数据加载方法可在客户端执行。

步骤S301:响应于收到的数据加载请求,从缓存中读取总览数据,并根据数据加载请求指定的元素信息,从总览数据中获取对应的索引信息;

步骤S302:在缓存中查找与索引信息对应的详情数据,并在当前界面加载查找到的详情数据。

本发明实施例的缓存指客户端的本地缓存。在缓存中查找与索引信息对应的详情数据,具体可以包括:从详情数据所在的存储层级中,查找与索引信息对应且与当前界面匹配的一种类型的详情数据。

例如,用户在界面上操作了某类界面元素,App则收到相应的数据加载请求,该数据加载请求中包括指定的元素信息,该指定的元素信息是根据用户操作的界面元素而确定的。

与当前界面匹配的一种类型的详情数据是根据界面应用场景设置的,例如,当前界面预先设定了需要展示第一类型详情数据,那么根据索引信息查找到的则是第一类型详情数据。

在一个实施例中,总览数据还包括机构信息;元素对应的机构可以是元素数据的来源方或者与元素数据相关的接入平台,具体根据业务场景设定。本发明实施例的数据加载方法还可以包括:根据机构信息获取对应机构的界面要素,并在当前界面加载界面要素。

本发明实施例的数据加载方法可以在本发明实施例的数据缓存方法的基础上实现,上文实施例的数据缓存方法可作为本实施例的数据加载方法的一部分,例如,客户端在执行步骤S301之前,可以先执行图1所示实施例的数据缓存方法,对应服务端侧执行的是图2所示实施例的数据缓存方法。

图4是根据本发明一个实施例的数据更新方法的主要步骤示意图。

如图4所示,本发明一个实施例的数据更新方法主要包括如下的步骤S401至步骤S402。本实施例的数据更新方法可由客户端执行。

步骤S401:根据服务端发送的业务数据变动消息,确定缓存中的待更新数据以及更新方式,待更新数据包括总览数据和/或详情数据;

步骤S402:按照所确定的更新方式,将待更新数据更新为服务端变动后的数据。

在一个实施例中,详情数据分为第一类型详情数据和第二类型详情数据,第一类型详情数据为能同时满足分布界面数量条件和数据加载时限条件的详情数据,第二类型详情数据为不能同时满足分布界面数量条件和数据加载时限条件的详情数据。

在待更新数据为总览数据或第一类型详情数据的情况下,按照所确定的更新方式,将待更新数据更新为服务端变动后的数据,具体包括:通过全局广播的方式触发缓存数据更新程序,以立即向服务端请求变动后的数据,然后将待更新数据更新为变动后的数据。

在待更新数据为第二类型详情数据的情况下,按照所确定的更新方式,将待更新数据更新为服务端变动后的数据,具体包括:等待待更新数据通过界面展示时,再向服务端请求变动后的数据,然后将待更新数据更新为变动后的数据。

在一个实施例中,从服务端的接口返回报文中获取业务数据变动消息。

在另一个实施例中,通过与服务端建立长连接,接收服务端推送的业务数据变动消息。

本发明实施例的数据更新方法可以在本发明实施例的数据缓存方法的基础上实现,上文实施例的数据缓存方法可作为本实施例的数据更新方法的一部分,例如,客户端在执行步骤S401之前,可以先执行图1所示实施例的数据缓存方法,对应服务端侧执行的是图2所示实施例的数据缓存方法。本领域技术人员可以理解的是,数据更新过程中还可以进行数据加载,具体参见上文对数据加载方法的实施例的介绍。

本发明上述实施例的数据缓存方法、数据加载方法、数据更新方法可以用于App数据(业务数据)缓存、加载、更新,本发明实施例适用的App包括但不限于支付管理类App。下面以数字人民币App为例,对本发明实施例的数据缓存、加载及更新方法做进一步介绍。

随着数字人民币(或称数字货币)App接入机构的增多,不同机构的钱包数据趋于多样化。在App的数据缓存方面,需采用更灵活、综合的App数据缓存方法,且需要满足日益丰富的应用场景,在数据加载时需要提高App加载性能,提升用户体验。对此,本发明的一个实施例提出一种基于手机应用本地缓存技术的数据分层缓存方法,该方法按照界面分布、实时准确性要求、数据结构类型等特征对多样化的App数据进行分层,通过优先加载缓存数据,服务端数据获取即刷新的方式,进行界面数据加载,针对不同层级或类型的缓存数据,分别采用全局广播更新、界面加载时更新两种策略,进行缓存数据更新。

图5是根据本发明一个实施例的实现数据缓存、加载和更新的系统结构示意图,该系统结构可设置于客户端,相应地,按照图5所示的系统结构实现本发明实施例的数据缓存、加载、更新方法时,由客户端执行对应的各方法。如图5所示,虚线箭头表示缓存数据更新流程,实线箭头表示缓存数据加载流程。

按照界面数据分布、数据实时准确性要求、数据结构类型特征对业务数据进行分层,具体分为:总览列表信息(或称列表数据)、元素账户信息(或称元素账户数据)、元素个性化信息(或称元素个性化数据),其中,列表数据即总览数据的一个具体示例,将其缓存到第一存储层级;元素账户数据、元素个性化数据属于详情数据,具体地,元素账户数据为第一类型详情数据,元素个性化数据为第二类型详情数据,将元素账户数据、元素个性化数据缓存到第二存储层级,且二者在第二存储层级处于不同的子层级,即分别独立存储。

针对分层后的数据分别进行json类型转换和序列化处理,并将序列化结果进行加密,然后缓存至应用本地(即客户端本地),从而得到总览列表数据缓存(即第一存储层级)、元素账户数据缓存(即第二存储层级的一个子层级)、元素个性化数据缓存(即第二存储层级的另一个子层级)。json类型转换的目的是为了使数据类型满足界面显示的需要,序列化处理主要是为了减少数据量,加密是为了提高客户端本地数据的安全性。

当界面(指App中的一个界面)需要展示业务数据时,首先判断所需展示的数据类别,优先从本地缓存中读取相应数据进行展示。然后,从服务端请求最新数据,更新展示界面与缓存数据。从而,既提高了界面响应的即时性,又更好地保证了数据的实时准确性。

当服务端相关数据发生变化时,App根据数据类别选择更新策略,具体地,如果是列表数据和/或元素账户数据发生变化,则通过App全局广播的形式主动触发缓存数据更新程序,缓存数据更新程序可以立即向服务端请求变动后的数据(变化后的列表数据和/或元素账户数据),然后将缓存中相应的列表数据和/或元素账户数据更新为服务端变动后的数据;如果是元素个性化数据发生变化,则采用被动等待下次界面展示数据时更新缓存的方式,即等待待更新数据通过界面展示时,再向服务端请求变动后的数据,然后将缓存的待更新数据更新为服务端变动后的数据。

图6是根据本发明一个实施例的业务数据分层存储结构示意图,如图6所示,本发明实施例的业务数据具体分为两个存储层级,第一存储层级为列表数据,第二存储层级为元素数据,第二存储层级又包括两个子层级,分别存储元素账户数据和元素个性化数据。列表数据为涉及App界面整体展示完整性的数据,元素账户数据为业务实时准确性要求较高且界面展示分布较广的数据,属于第一类型详情数据;元素个性化数据是仅在特定界面展示的数据,且通常实时性要求不高,属于第二类型详情数据。

列表数据为数组类型结构,每个元素都是一个实体对象,元素对象主要包括元素索引号、元素所属机构两种属性,元素索引号即索引信息,元素所属机构即机构信息,例如机构号。列表数据中的各个元素与机构相对应,其中多个元素的机构号可以相同。对于App的多样化数据而言,元素对应的机构可以是元素数据的来源方或者与元素数据相关的接入平台,具体根据业务场景设定,以数字人民币App为例,元素可以是钱包数据或基于钱包数据生成的数据,元素对应的机构可以是各钱包数据所属的商业银行。

列表数据为总览数据的具体示例,元素数据为详情数据的具体示例,通过元素索引号为key(键)值的主要部分,可以查找缓存的元素数据,例如查找元素账户数据或元素个性化数据。通过元素所属机构可以获取到元素所属机构的界面要素,以便展示,从而提高界面加载速度。元素所属机构的界面要素(UI要素)可以存储在特定的服务器或数据库中。

本发明实施例根据界面数据分布、数据实时准确性要求、数据结构类型特征,对支付管理类App等应用程序中需要本地缓存的业务数据进行分层处理,分层后的列表数据与单个元素数据之间,采用元素索引的方式,将不同层次的数据统一起来,方便查找和读取,能够满足App多样化数据的缓存需求,进而使得在加载数据时,能够分层加载,有效保证数据展示的实时性和准确性,并可加快App界面加载速度,提高App运行性能,且不受应用场景局限,可扩展性好。

图7是根据本发明一个实施例的数据加载流程示意图,如图7所示,当App即将展示总览列表(即列表数据,简称列表)中的第n个元素时,首先读取列表缓存数据(即缓存的列表数据),从列表中获取第n个元素对象。读取第n个元素对象的元素索引(即索引信息)与元素所属机构(即机构信息)。

根据元素所属机构,在界面预先加载相应机构的界面要素。根据元素索引,按照应用场景需要从缓存中读取元素数据缓存,具体可以读取元素账户数据或元素个性化数据。

判断缓存数据是否为空,为空则表示缓存中不存在所要读取的元素账户数据或元素个性化数据,则从服务端请求相应的数据,然后刷新界面以展示数据,并将请求到的元素账户数据或元素个性化数据缓存到第二存储层级。若缓存数据不为空,表示缓存中存在所要读取的元素账户数据或元素个性化数据,则从缓存中读取相应的元素数据,并在界面上展示读取到的元素数据。

图8是根据本发明一个实施例的数据更新流程示意图,如图8所示,本发明实施例根据不同数据的应用场景和实时准确性要求,针对不同的数据采用不同的更新方法,以减少对App运行性能的影响。

当服务端数据发送变更,App判断变更的数据类型,即确定缓存中的待更新数据。App通过服务端的接口返回报文中得到服务端传递的业务数据变动消息,或者,App可以通过与服务端建立长连接的方式,接收服务端主动推送至App的业务数据变动消息。变更的数据类型可以是总览列表数据(即列表数据)、元素账户数据、元素个性化数据中的一种或多种。

当总览列表数据和元素账户数据变动时,App内部可以采用全局广播的方式触发缓存数据更新程序,以主动向服务端请求变动后的最新数据,以更新缓存,这样下一次进入相关的展示界面,加载的缓存数据将是最新数据,从而更好地满足实时准确性要求。

当元素个性化数据变动时,App可以被动等待下一次界面展示时,再向服务端请求最新数据来更新缓存。这样可以减少App全局广播带来的性能损耗,同时对业务功能的实时准确性影响较小。

本发明实施例能够兼顾不同缓存数据的应用场景、实时准确性要求以及App的运行性能,实现针对不同特征的数据采用不同的缓存更新方法,针对界面分布多、实时准确性要求高的数据,采用全局广播的方式,立即更新缓存数据,提前为后续的界面展示做好数据准备,更好地满足实时准确性要求,而针对仅在特定界面展示、实时准确性要求相对较低的数据,采用进入相应界面时更新的方式,实现分层或分类更新,保证了数据展示的实时性和准确性,加快了App界面加载速度,并可提高App运行性能。

本发明实施例的数据缓存、加载、更新方法不仅适用于简单业务场景的数据,而且适用于复杂业务场景的数据,例如数字人民币App等接入机构较多、钱包数据多样化的App数据。且相比于现有技术,本发明实施例不要求多个缓存数据的数据来源可共享,也无需设置数据更新时间限值,本发明实施例能够实现灵活数据缓存、加载和更新,既满足数据实时准确性要求,又提高了App运行性能。

图9是根据本发明一个实施例的数据缓存装置的主要模块示意图。

如图9所示,本发明一个实施例的数据缓存装置900主要包括:数据接收模块901、数据缓存模块902。数据缓存装置900可位于客户端。

数据接收模块901,用于接收服务端发送的业务数据;

数据缓存模块902,用于根据业务数据的数据结构类型,从业务数据中得到总览数据和详情数据,总览数据包括用于查找详情数据的索引信息;

数据缓存模块902还用于将总览数据和详情数据缓存到不同的存储层级。

在一个实施例中,数据缓存模块902具体用于:基于业务数据中数组类型的数据,得到包括数组中各元素对象的总览数据,元素对象包括索引信息;以及,根据业务数据中数组元素类型的数据,得到与数组中每个元素对象对应的元素数据,作为详情数据。

在一个实施例中,数据缓存模块902具体用于:将总览数据缓存到第一存储层级;以及,将详情数据分为第一类型详情数据和第二类型详情数据,其中,第一类型详情数据为能同时满足分布界面数量条件和数据加载时限条件的详情数据,第二类型详情数据为不能同时满足分布界面数量条件和数据加载时限条件的详情数据;将第一类型详情数据和第二类型详情数据分别存储到第二存储层级的不同子层级。

数据缓存模块902根据业务数据的字段或来源接口,确定业务数据的数据结构类型,以及判断详情数据是否能同时满足分布界面数量条件和数据加载时限条件,来源接口为服务端提供业务数据的接口。

数据缓存装置900还可以包括数据处理模块,用于:对总览数据和详情数据进行序列化处理和/或加密处理。

图10是根据本发明另一个实施例的数据缓存装置的主要模块示意图。如图10所示,本发明另一个实施例的数据缓存装置1000主要包括:数据分层模块1001、数据发送模块1002。数据缓存装置1000可位于服务端。

数据分层模块1001,用于按照业务数据的数据结构类型存储业务数据,数据结构类型包括数组类型、数组元素类型,其中,将数组类型的业务数据存储为总览数据,将数组元素类型的业务数据存储为详情数据,总览数据包括用于查找详情数据的索引信息。

数据发送模块1002,用于将总览数据和详情数据发送到客户端,以由客户端进行缓存。

数据分层模块1001具体可用于:将能同时满足分布界面数量条件和数据加载时限条件的详情数据存储为第一类型详情数据;以及,将不能同时满足分布界面数量条件和数据加载时限条件的详情数据存储为第二类型详情数据。

在一个实施例中,数据分层模块1001可分别以不同字段集合中的字段对总览数据、第一类型详情数据、第二类型详情数据进行存储。

在另一个实施例中,数据发送模块1002可通过不同的接口发送总览数据、第一类型详情数据、第二类型详情数据。

图11是根据本发明一个实施例的数据加载装置的主要模块示意图。如图11所示,本发明一个实施例的数据加载装置1100主要包括:数据读取模块1101、数据加载模块1102。数据加载装置1100可位于客户端。

数据读取模块1101,用于响应于收到的数据加载请求,从缓存中读取总览数据,并根据数据加载请求指定的元素信息,从总览数据中获取对应的索引信息;

数据加载模块1102,用于在缓存中查找与索引信息对应的详情数据,并在当前界面加载查找到的详情数据。

在一个实施例中,数据加载模块1102具体用于:从详情数据所在的存储层级中,查找与索引信息对应且与当前界面匹配的一种类型的详情数据。

总览数据还可以包括机构信息。数据加载装置1100还可以包括界面要素加载模块,用于:根据机构信息获取对应机构的界面要素,并在当前界面加载界面要素。

本实施例的数据加载装置1100可基于数据缓存装置900、数据缓存装置1000实现,即:数据加载装置1100还可以包括数据缓存装置900中的功能模块,与数据加载装置1100所在的客户端进行交互的服务端可以包括数据缓存装置1000。

图12是根据本发明一个实施例的数据更新装置的主要模块示意图。如图12所示,本发明一个实施例的数据更新装置1200主要包括:待更新数据确定模块1201、数据更新模块1202。数据更新装置1200可位于客户端。

待更新数据确定模块1201,用于根据服务端发送的业务数据变动消息,确定缓存中的待更新数据以及更新方式,待更新数据包括总览数据和/或详情数据;

数据更新模块1202,用于按照所确定的更新方式,将待更新数据更新为服务端变动后的数据。

在一个实施例中,详情数据分为第一类型详情数据和第二类型详情数据,第一类型详情数据为能同时满足分布界面数量条件和数据加载时限条件的详情数据,第二类型详情数据为不能同时满足分布界面数量条件和数据加载时限条件的详情数据;

在待更新数据为总览数据或第一类型详情数据的情况下,数据更新模块1202具体用于:通过全局广播的方式触发缓存数据更新程序,以立即向服务端请求变动后的数据,然后将待更新数据更新为变动后的数据;

在待更新数据为第二类型详情数据的情况下,数据更新模块1202具体用于:待待更新数据通过界面展示时,向服务端请求变动后的数据,然后将待更新数据更新为变动后的数据。

数据更新装置1200还可以包括消息接收模块,用于从服务端的接口返回报文中获取业务数据变动消息,或者,通过与服务端建立长连接,接收服务端推送的业务数据变动消息。

本实施例的数据更新装置1200可基于数据缓存装置900、数据缓存装置1000实现,即:数据更新装置1200还可以包括数据缓存装置900中的功能模块,与数据更新装置1200所在的客户端进行交互的服务端可以包括数据缓存装置1000。

另外,在本发明实施例中所述数据缓存装置、数据加载装置、数据更新装置的具体实施内容,在上面所述数据缓存方法、数据加载方法、数据更新方法中已经详细说明了,故在此重复内容不再说明。

图13示出了可以应用本发明实施例的数据缓存方法、数据加载方法、数据更新方法或数据缓存装置、数据加载装置、数据更新装置的示例性系统架构1300。

如图13所示,系统架构1300可以包括终端设备1301、1302、1303,网络1304和服务器1305。网络1304用以在终端设备1301、1302、1303和服务器1305之间提供通信链路的介质。网络1304可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。

用户可以使用终端设备1301、1302、1303通过网络1304与服务器1305交互,以接收或发送消息等。终端设备1301、1302、1303上可以安装有各种通讯客户端应用,例如支付类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。

终端设备1301、1302、1303可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。

服务器1305可以是提供各种服务的服务器,例如对用户利用终端设备1301、1302、1303所浏览的购物类网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的产品信息查询请求等数据进行分析等处理,并将处理结果(例如支付信息--仅为示例)反馈给终端设备。

需要说明的是,本发明实施例所提供的数据缓存方法一般由终端设备1301、1302、1303或服务器1305执行,相应地,数据缓存装置一般设置于终端设备1301、1302、1303或服务器1305中。本发明实施例所提供的数据加载方法、数据更新方法一般由终端设备1301、1302、1303执行,相应地,数据加载装置、数据更新装置一般设置于终端设备1301、1302、1303中。

应该理解,图13中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。

下面参考图14,其示出了适于用来实现本申请实施例的终端设备或服务器的计算机系统1400的结构示意图。图14示出的终端设备或服务器仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。

如图14所示,计算机系统1400包括中央处理单元(CPU)1401,其可以根据存储在只读存储器(ROM)1402中的程序或者从存储部分1408加载到随机访问存储器(RAM)1403中的程序而执行各种适当的动作和处理。在RAM 1403中,还存储有系统1400操作所需的各种程序和数据。CPU 1401、ROM 1402以及RAM 1403通过总线1404彼此相连。输入/输出(I/O)接口1405也连接至总线1404。

以下部件连接至I/O接口1405:包括键盘、鼠标等的输入部分1406;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分1407;包括硬盘等的存储部分1408;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分1409。通信部分1409经由诸如因特网的网络执行通信处理。驱动器1410也根据需要连接至I/O接口1405。可拆卸介质1411,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1410上,以便于从其上读出的计算机程序根据需要被安装入存储部分1408。

特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1409从网络上被下载和安装,和/或从可拆卸介质1411被安装。在该计算机程序被中央处理单元(CPU)1401执行时,执行本申请的系统中限定的上述功能。

需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。

附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括数据接收模块、数据缓存模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,数据接收模块还可以被描述为“用于接收服务端发送的业务数据的模块”。

作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:接收服务端发送的业务数据;根据所述业务数据的数据结构类型,从所述业务数据中得到总览数据和详情数据,所述总览数据包括用于查找所述详情数据的索引信息;将所述总览数据和所述详情数据缓存到不同的存储层级。

根据本发明实施例的技术方案,根据业务数据的数据结构类型,从业务数据中得到总览数据和详情数据,总览数据包括用于查找所述详情数据的索引信息,将总览数据和详情数据缓存到不同的存储层级,该实施例能够满足App多样化数据的缓存需求,既实现了数据的分层缓存又实现了不同层次数据的统一,方便数据的查找和读取,基于本发明实施例的数据缓存方法缓存数据,使得在进行数据加载时,能够分层加载,有效保证数据展示的实时性和准确性,并可加快App界面加载速度,提高App运行性能,且不受应用场景局限,可扩展性好,本发明实施例的数据更新方法,使得不同层次和类型的数据按照各自的更新策略更新,实现了数据的分层更新,也进一步保证了数据展示的实时性和准确性,加快了App界面加载速度,并可提高App运行性能。

上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

相关技术
  • 一种数据缓存方法、加载方法、更新方法和相关装置
  • 一种移动应用中表单数据缓存方法、加载方法及装置
技术分类

06120112923232