数据的存储方法及装置制造方法

文档序号:6506415阅读:141来源:国知局
数据的存储方法及装置制造方法
【专利摘要】本发明公开了一种数据的存储方法及装置,在上述方法中,向网络侧设备发起请求消息,获取待缓存的网络数据;从缓存实体对象集合中为网络数据选取一个或多个缓存实体对象,并直接将获取到的第一类型的网络数据存储至一个或多个缓存实体对象中,或者,将经过序列化处理后的第二类型的网络数据存储至一个或多个缓存实体对象中。根据本发明提供的技术方案,进而可以减少对网络的依赖,节省网络流量和移动终端的电量。
【专利说明】数据的存储方法及装置

【技术领域】
[0001 ] 本发明涉及通信领域,具体而言,涉及一种数据的存储方法及装置。

【背景技术】
[0002]相关技术中,无论对于大型应用还是小型应用而言,灵活的缓存可以说不仅大大减轻了服务器的压力,而且因为更快速的用户体验而方便了广大用户。移动终端应用通常归类于小型应用,其中,大部分(99%左右)的应用均不需要实时更新,而且诟病于蜗牛般的移动网速,与服务器的数据交互当是能少则少,这样用户体验才能更加出色。
[0003]采用缓存可以大大缓解数据交互的压力。缓存管理通常的适用环境可以包括:
[0004](1)提供网络服务的应用;
[0005](2)数据无需实时更新,即便是短短几分钟的延迟也可以采用缓存机制;
[0006](3)缓存的过期时间是可以接受的,其不会导致某些数据因为更新不及时而影响产品的形象。
[0007]由此,缓存所能带来的好处有如下几点:
[0008](1)可以大大减小服务器的压力;
[0009](2)客户端的响应速度大大加快;
[0010](3)客户端数据加载出错的概率大大降低,极大地提高了应用的稳定性;
[0011](4)在一定程度上可以支持离线浏览或者可以说为离线浏览提供了技术支持。
[0012]目前,两种较为常用的缓存管理方法为:数据库法和文件法。数据库法是在下载完数据文件后,将文件的相关信息,例如:统一资源定位符(URL)、路径、下载时间、过期时间等存放到数据库,在下次需要下载的时候,可以根据URL先从数据库中查询,如果查询到当前时间并未过期,则可以根据路径读取本地文件,从而实现缓存的效果。文件法则是使用File.lastModifiedO方法得到文件的最后修改时间,然后与当前时间进行比较从而判断是否过期,进而实现缓存的效果。
[0013]然而,相关技术中所提供的数据缓存解决方案过分地依赖远程网络服务,同时还需大量地耗费网络流量以及移动终端的电量。


【发明内容】

[0014]本发明提供了一种数据的存储方法及装置,以至少解决相关技术中所提供的数据缓存解决方案过分地依赖远程网络服务,同时还需大量地耗费网络流量以及移动终端电量的问题。
[0015]根据本发明的一个方面,提供了一种数据的存储方法。
[0016]根据本发明的数据的存储方法包括:向网络侧设备发起请求消息,获取待缓存的网络数据;从缓存实体对象集合中为网络数据选取一个或多个缓存实体对象,并直接将获取到的第一类型的网络数据存储至一个或多个缓存实体对象中,或者,将经过序列化处理后的第二类型的网络数据存储至一个或多个缓存实体对象中。
[0017]优选地,在将第一类型的网络数据存储至一个或多个缓存实体对象中之前,还包括:获取第一类型的网络数据的大小;判断第一类型的网络数据的大小是否小于或等于第一缓存实体对象中的剩余存储空间的大小,其中,第一缓存实体对象在一个或多个缓存实体对象中的存储优先级别最高;如果否,则按照预设规则将第一缓存实体对象中当前存储的部分或全部数据进行删除,或者,将第一缓存实体对象中存储的部分或全部数据转移至除第一缓存实体对象之外的其他缓存实体对象中,其中,预设规则包括以下之一:最近最少使用(LRU)规则、在缓存实体对象中存储的时间。
[0018]优选地,在将第二类型的网络数据存储至一个或多个缓存实体对象中之前,还包括:获取第二类型的网络数据的大小;判断第二类型的网络数据的大小是否小于或等于第一缓存实体对象中的剩余存储空间的大小;如果否,则按照预设规则将第一缓存实体对象中当前存储的部分或全部数据进行删除,或者,将第一缓存实体对象中存储的部分或全部数据转移至除第一缓存实体对象之外的其他缓存实体对象中,其中,预设规则包括以下之一:LRU规则、在缓存实体对象中存储的时间。
[0019]优选地,在将第一类型的网络数据存储至一个或多个缓存实体对象中,或者,将第二类型的网络数据存储至一个或多个缓存实体对象中之前,还包括:为第一类型的网络数据或者第二类型的网络数据设置存储标识,其中,存储标识用于在将第一类型的网络数据或者第二类型的网络数据存储至一个或多个缓存实体对象中之后查找第一类型的网络数据或者第二类型的网络数据。
[0020]优选地,将第一类型的网络数据存储至一个或多个缓存实体对象中,或者,将第二类型的网络数据存储至一个或多个缓存实体对象中包括:判断一个或多个缓存实体对象中是否已经存在存储标识;如果存在,则直接采用第一类型的网络数据或者第二类型的网络数据对在一个或多个缓存实体对象中当前存储的与存储标识对应的数据进行覆盖,或者在对与存储标识对应的数据进行回调处理后,再采用第一类型的网络数据或者第二类型的网络数据对与存储标识对应的数据进行覆盖。
[0021]优选地,为第一类型的网络数据或者第二类型的网络数据设置存储标识包括:遍历一个或多个缓存实体对象中已经存在的全部存储标识;根据遍历结果确定为第一类型的网络数据或者第二类型的网络数据设置的存储标识,其中,设置的存储标识与已经存在的全部存储标识均不相同。
[0022]优选地,缓存实体对象集合包括以下至少之一:初始配置的内存缓存实体对象;初始配置的文件缓存实体对象;初始配置的数据库缓存实体对象;用户自定义的扩展缓存实体对象。
[0023]根据本发明的另一方面,提供了一种数据的存储装置。
[0024]根据本发明的数据的存储装置包括:第一获取模块,用于向网络侧设备发起请求消息,获取待缓存的网络数据;存储模块,用于从缓存实体对象集合中为网络数据选取一个或多个缓存实体对象,并直接将获取到的第一类型的网络数据存储至一个或多个缓存实体对象中,或者,将经过序列化处理后的第二类型的网络数据存储至一个或多个缓存实体对象中。
[0025]优选地,上述装置还包括:第二获取模块,用于获取第一类型的网络数据的大小;第一判断模块,用于判断第一类型的网络数据的大小是否小于或等于第一缓存实体对象中的剩余存储空间的大小,其中,第一缓存实体对象在一个或多个缓存实体对象中的存储优先级别最高;第一处理模块,用于在第一判断模块输出为否时,按照预设规则将第一缓存实体对象中当前存储的部分或全部数据进行删除,或者,将第一缓存实体对象中存储的部分或全部数据转移至除第一缓存实体对象之外的其他缓存实体对象中,其中,预设规则包括以下之一:LRU规则、在缓存实体对象中存储的时间。
[0026]优选地,上述装置还包括:第三获取模块,用于获取第二类型的网络数据的大小;第二判断模块,用于判断第二类型的网络数据的大小是否小于或等于第一缓存实体对象中的剩余存储空间的大小;第二处理模块,用于在第二判断模块输出为否时,按照预设规则将第一缓存实体对象中当前存储的部分或全部数据进行删除,或者,将第一缓存实体对象中存储的部分或全部数据转移至除第一缓存实体对象之外的其他缓存实体对象中,其中,预设规则包括以下之一:LRU规则、在缓存实体对象中存储的时间。
[0027]优选地,上述装置还包括:设置模块,用于为第一类型的网络数据或者第二类型的网络数据设置存储标识,其中,存储标识用于在将第一类型的网络数据或者第二类型的网络数据存储至一个或多个缓存实体对象中之后查找第一类型的网络数据或者第二类型的网络数据。
[0028]优选地,存储模块包括:判断单元,用于判断一个或多个缓存实体对象中是否已经存在存储标识;处理单元,用于在判断单元输出为是时,则直接采用第一类型的网络数据或者第二类型的网络数据对在一个或多个缓存实体对象中当前存储的与存储标识对应的数据进行覆盖,或者在对与存储标识对应的数据进行回调处理后,再采用第一类型的网络数据或者第二类型的网络数据对与存储标识对应的数据进行覆盖。
[0029]优选地,设置模块包括:遍历单元,用于遍历一个或多个缓存实体对象中已经存在的全部存储标识;确定单元,用于根据遍历结果确定为第一类型的网络数据或者第二类型的网络数据设置的存储标识,其中,设置的存储标识与已经存在的全部存储标识均不相同。
[0030]通过本发明,采用向网络侧设备发起请求消息,获取待缓存的网络数据;从缓存实体对象集合中为网络数据选取一个或多个缓存实体对象,并直接将获取到的第一类型的网络数据存储至一个或多个缓存实体对象中,或者,将经过序列化处理后的第二类型的网络数据存储至一个或多个缓存实体对象中,即通过构建的缓存实体对象集合来存储从网络侧设备接收到的不同类型的网络数据,减少向网络侧设备重复发起获取相同网络数据的请求,降低与网络侧设备的信息交互频率,由此解决了相关技术中所提供的数据缓存解决方案过分地依赖远程网络服务,同时还需大量地耗费网络流量以及移动终端电量的问题,进而可以减少对网络的依赖,节省网络流量和移动终端的电量。

【专利附图】

【附图说明】
[0031]此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0032]图1是根据本发明实施例的数据的存储方法;
[0033]图2是根据本发明优选实施例的android平台缓存管理的示意图;
[0034]图3是根据本发明实施例的数据的存储装置的结构框图;
[0035]图4是根据本发明优选实施例的数据的存储装置的结构框图。

【具体实施方式】
[0036]下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
[0037]图1是根据本发明实施例的数据的存储方法。如图1所示,该方法可以包括以下处理步骤:
[0038]步骤S102:向网络侧设备发起请求消息,获取待缓存的网络数据;
[0039]步骤S104:从缓存实体对象集合中为网络数据选取一个或多个缓存实体对象,并直接将获取到的第一类型的网络数据存储至一个或多个缓存实体对象中,或者,将经过序列化处理后的第二类型的网络数据存储至一个或多个缓存实体对象中。
[0040]相关技术中所提供的数据缓存解决方案过分地依赖远程网络服务,同时还需大量地耗费网络流量以及移动终端电量。采用如图1所示的方法,向网络侧设备发起请求消息,获取待缓存的网络数据(例如:图片数据、字符串数据);从缓存实体对象集合中为网络数据选取一个或多个缓存实体对象,并直接将获取到的第一类型的网络数据存储至一个或多个缓存实体对象中,或者,将经过序列化处理后的第二类型的网络数据存储至一个或多个缓存实体对象中,即通过构建的缓存实体对象集合来存储从网络侧设备接收到的不同类型的网络数据,减少向网络侧设备重复发起获取相同网络数据的请求,降低与网络侧设备的信息交互频率,由此解决了相关技术中所提供的数据缓存解决方案过分地依赖远程网络服务,同时还需大量地耗费网络流量以及移动终端电量的问题,进而可以减少对网络的依赖,节省网络流量和移动终端的电量。
[0041]需要说明的是,在上述选取的一个或多个缓存实体对象中存储的网络数据可以分为两种类型:
[0042]第一类型、基本数据类型以及自身已经实现序列化的数据类型,例如:int、float、字符串数据;该类网络数据无需再经过序列化处理,而可以直接进行存储;
[0043]第二类型、结构体类型或者图片类型;该类网络数据只有在经过序列化处理后,才能够进行存储。
[0044]在优选实施过程中,上述缓存实体对象集合可以包括但不限于以下至少之一:
[0045]( 1)初始配置的内存缓存实体对象;
[0046](2)初始配置的文件缓存实体对象;
[0047](3)初始配置的数据库缓存实体对象;
[0048](4)用户自定义的扩展缓存实体对象。
[0049]在优选实施例中,上述缓存实体对象集合实现了一个备份/缓存组件,构建了一个框架来统一执行不同类型网络数据的存储,其初始配置基于缓存抽象类已经实现了以文件为存储载体的数据缓存、以内存为存储载体的数据缓存以及以数据库为存储载体的数据缓存三种基本的缓存类别,同时用户也可以根据自身需要实现抽象类接口定义自己的缓存实现或者继续扩展已经实现的上述三种缓存方式,以满足实际应用过程中的多样性。在上述两种功能的基础上,用户还可以通过封装的缓存管理类对象来使用缓存功能。
[0050]下面结合图2以安卓(android)平台的缓存管理组件为例,对android平台缓存管理的实现方法做进一步的详细描述。图2是根据本发明优选实施例的android平台缓存管理的示意图。如图2所示,android平台缓存管理如下:
[0051](1)缓存管理类,支持泛型数据并可以按照LRU原则对数据进行淘汰。
[0052]缓存管理类可以提供以下各项功能:
[0053]功能一、清除当前类型缓存的所有数据;
[0054]功能二、根据K得到当前类型缓存的所有数据中的V值,其中,K为键的数据类型,android平台Java语法支持泛型声明;V为值的数据类型,android平台Java语法支持泛型声明;
[0055]功能三、存入缓存对应的(Κ-V)数据;
[0056]功能四、从缓存中移除对应(K-V )数据;
[0057]功能五、获取缓存的大小;
[0058]功能六、获取缓存的最大限制;
[0059]在该优选实施例中,缓存管理支持泛型键-值,可以根据实际情况进行设置。本缓存管理组件实现的文件缓存和数据库缓存都是〈String, Externalizable〉类型,任何可以序列化的文件或者数据都可以进行缓存。
[0060]( 2 )缓存实体接口,支持泛型数据,实现数据存取。
[0061]缓存实体的抽象类提供了以下几类接口:
[0062]第一类接口、获取该缓存中的最久未被访问的(Κ-V)数据,以便在缓存即将溢出时删除;
[0063]第二类接口、在缓存中根据KEY得到对应的VALUE ;
[0064]第三类接口、根据KEY向缓存中存入数据,当缓存中已存在与KEY对应的数据时,返回已经存在的对应的V值;
[0065]第四类接口、根据KEY删除缓存中对应的数据;
[0066]第五类接口、获取缓存的最大限制值;
[0067]第六类接口、获取已经缓存数据的大小/数量;
[0068]第七类接口、遍历得到KEY的SET对象。
[0069](3)内存缓存类,支持泛型数据,实现数据对象在内存中的存取。
[0070](4)文件缓存类,仅支持〈String, Externalizable〉型数据,实现数据对象以文件方式进行存取。
[0071](5)数据库缓存类,仅支持〈String, Externalizable〉型数据,实现数据对象以数据库方式进行存取。
[0072](6) Externalizable,可序列化的值对象数据类型,android平台下由Externalizable接口完成该功能。
[0073]优选地,在步骤S104,将第一类型的网络数据存储至一个或多个缓存实体对象中之前,还可以包括以下操作:
[0074]步骤S1:获取第一类型的网络数据的大小;
[0075]步骤S2:判断第一类型的网络数据的大小是否小于或等于第一缓存实体对象中的剩余存储空间的大小,其中,第一缓存实体对象在一个或多个缓存实体对象中的存储优先级别最闻;
[0076]步骤S3:如果否,则按照预设规则将第一缓存实体对象中当前存储的部分或全部数据进行删除,或者,将第一缓存实体对象中存储的部分或全部数据转移至除第一缓存实体对象之外的其他缓存实体对象中,其中,上述预设规则可以包括但不限于以下之一:LRU规则、在缓存实体对象中存储的时间。
[0077]在优选实施例中,当从网络侧设备接收到网络数据(例如:字符串数据)时,经过判断发现此种类型的网络数据不需要进行序列化处理,而可以直接作为VALUE值来进行存储。其次,需要从缓存实体对象集合中为网络数据选取一个或多个缓存实体对象,同时可以指定每个缓存实体对象的最大容量限制。此处的缓存实体对象可以是已经配置完成的内存缓存实体对象、文件缓存实体对象或者数据库缓存实体对象,当然也可以是用户自定义的扩展缓存实体对象。在对网络数据进行存储的过程中,可以预先设定存储策略(例如:缓存实体对象的优先级),在该优选实施例中,可以设定内存缓存实体对象的优先级最高、文件缓存实体对象的优先级次之、数据库缓存实体对象的优先级排在最后。然后,开始判断优先级最高的内存缓存实体对象当前的存储容量是否满足刚刚接收到的网络数据,如果可以满足则直接将接收到的网络数据存储至内存缓存实体对象中。而如果内存缓存实体对象当前的存储容量无法容纳刚刚接收到的网络数据,此时,可以根据预设规则(例如:淘汰内存缓存实体对象中近期未使用的老化数据)将近期未使用的老化数据存入文件缓存实体对象或者数据库缓存实体对象中,而将刚接收到的网络数据存入内存缓存实体对象,从而能够灵活地进行数据缓存处理,以便不影响应用的性能和体验。当然,为了不影响终端侧设备的处理能力,避免过度使用内存缓存实体对象,因此,即便内存缓存实体对象当前的存储容量可以容纳刚刚接收到的网络数据,但是在存入网络数据后,内存缓存实体对象的使用率已经超过预设比例(例如:80%),此时,也需要根据预设规则(例如:淘汰内存缓存实体对象中近期未使用的老化数据)将近期未使用的老化数据存入文件缓存实体对象或者数据库缓存实体对象中。
[0078]在经过上述缓存处理过后,如果下次再访问该网络页面,需要展示相同的字符串数据时,则无需再向网络发起请求进行数据交互而是可以直接从内存缓存实体对象中获得相应的字符串数据进行展示,以便减少网络流量、加快页面展示速度、提升用户体验。
[0079]优选地,在步骤S104,将第二类型的网络数据存储至一个或多个缓存实体对象中之前,还可以包括以下步骤:
[0080]步骤S4:获取第二类型的网络数据的大小;
[0081]步骤S5:判断第二类型的网络数据的大小是否小于或等于第一缓存实体对象中的剩余存储空间的大小;
[0082]步骤S6:如果否,则按照预设规则将第一缓存实体对象中当前存储的部分或全部数据进行删除,或者,将第一缓存实体对象中存储的部分或全部数据转移至除第一缓存实体对象之外的其他缓存实体对象中,其中,上述预设规则可以包括但不限于以下之一:最近最少使用LRU规则、在缓存实体对象中存储的时间。
[0083]在优选实施例中,当从网络侧设备接收到网络数据(例如:图片数据)时,经过判断发现此种类型的网络数据需要进行序列化处理,首先,需要实现该数据类型的序列化处理,以此才可以作为VALUE值来进行存储。在完成上述序列化准备工作之后,就可以使用缓存管理组件进行缓存。其次,需要从缓存实体对象集合中为网络数据选取一个或多个缓存实体对象,同时可以指定每个缓存实体对象的最大容量限制。此处的缓存实体对象可以是已经配置完成的内存缓存实体对象、文件缓存实体对象或者数据库缓存实体对象,当然也可以是用户自定义的扩展缓存实体对象。在对网络数据进行存储的过程中,可以预先设定存储策略(例如:缓存实体对象的优先级),在该优选实施例中,可以设定内存缓存实体对象的优先级最高、文件缓存实体对象的优先级次之、数据库缓存实体对象的优先级排在最后。然后,开始判断优先级最高的内存缓存实体对象当前的存储容量是否满足刚刚接收到的网络数据,如果可以满足则直接将接收到的网络数据存储至内存缓存实体对象中。而如果内存缓存实体对象当前的存储容量无法容纳刚刚接收到的网络数据,此时,可以根据预设规则(例如:淘汰内存缓存实体对象中近期未使用的老化数据)将近期未使用的老化数据存入文件缓存实体对象或者数据库缓存实体对象中,而将刚接收到的网络数据存入内存缓存实体对象,从而能够灵活地进行数据缓存处理,以便不影响应用的性能和体验。当然,为了不影响终端侧设备的处理能力,避免过度使用内存缓存实体对象,因此,即便内存缓存实体对象当前的存储容量可以容纳刚刚接收到的网络数据,但是在存入网络数据后,内存缓存实体对象的使用率已经超过预设比例(例如:80%),此时,也需要根据预设规则(例如:淘汰内存缓存实体对象中近期未使用的老化数据)将近期未使用的老化数据存入文件缓存实体对象或者数据库缓存实体对象中。
[0084]在经过上述缓存处理过后,如果下次再访问该网络页面,需要展示相同的图片数据时,则无需再向网络发起请求进行数据交互而是可以直接从内存缓存实体对象中获得相应的图片数据进行展示,以便减少网络流量、加快页面展示速度、提升用户体验。
[0085]优选地,在步骤S104,将第一类型的网络数据存储至一个或多个缓存实体对象中,或者,将第二类型的网络数据存储至一个或多个缓存实体对象中之前,还可以包括以下处理:
[0086]步骤S7:为第一类型的网络数据或者第二类型的网络数据设置存储标识,其中,存储标识用于在将第一类型的网络数据或者第二类型的网络数据存储至一个或多个缓存实体对象中之后查找第一类型的网络数据或者第二类型的网络数据。
[0087]在优选实施例中,可以为每次接收到的网络数据设置存储标识KEY,而将网络数据作为VALUE,建立KEY与VALUE之间的对应关系,存储至一个或多个缓存实体对象中,由此可以便于后续通过KEY对已经存储的网络数据进行查找。后续如果需要查找哪次接收到的网络数据,可以在已知KEY的情况下,可以直接使用获取缓存数据功能,通过KEY值查找到对应数据。如果不知道KEY,则可以通过缓存管理类的获取KEY集合功能,遍历找到所有的KEY,然后找到所需KEY值后便可以进行查询。
[0088]优选地,在步骤S104中,将第一类型的网络数据存储至一个或多个缓存实体对象中,或者,将第二类型的网络数据存储至一个或多个缓存实体对象中可以包括以下操作:
[0089]步骤S8:判断一个或多个缓存实体对象中是否已经存在存储标识;
[0090]步骤S9:如果存在,则直接采用第一类型的网络数据或者第二类型的网络数据对在一个或多个缓存实体对象中当前存储的与存储标识对应的数据进行覆盖,或者在对与存储标识对应的数据进行回调处理后,再采用第一类型的网络数据或者第二类型的网络数据对与存储标识对应的数据进行覆盖。
[0091]在优选实施例中,根据网络数据的类型,如果是字符串数据可以不需要进行序列化处理,而直接作为VALUE值来进行存储;如果是图片数据需要实现该数据类型的序列化处理,以此才可以作为VALUE值来进行存储。在存储过程当中,网络数据以存储标识KEY加以区分。而在存储网络数据时,为网络数据分配的存储标识KEY并非是唯一的,即缓存实体对象中很可能已经存在与为刚接收到的网络数据分配的存储标识KEY相同的标识。此时,缓存实体对象中如果存在与KEY对应的数据,存储过程中则会采用新数据直接覆盖旧数据,当然,被覆盖的旧数据还可以通过一个回调接口返回给用户,具体是否需要进行回调旧数据的处理可以根据用户个人需求而设定。
[0092]优选地,在步骤S7中,为第一类型的网络数据或者第二类型的网络数据设置存储标识可以包括以下步骤:
[0093]步骤S10:遍历一个或多个缓存实体对象中已经存在的全部存储标识;
[0094]步骤S11:根据遍历结果确定为第一类型的网络数据或者第二类型的网络数据设置的存储标识,其中,设置的存储标识与已经存在的全部存储标识均不相同。
[0095]在优选实施例中,为了避免增加在一个或多个缓存实体对象中查找网络数据的复杂性与繁琐性,同时还为了避免因存储标识相同而覆盖数据所造成的误操作引起数据丢失,因此,在设置存储标识之前可以首先遍历各个缓存实体对象中已经存在哪些存储标识,然后再设置一个与当前已经存在的全部存储标识均不相同的存储标识。
[0096]作为本发明的一个优选实施例,在使用android平台缓存工具进行缓存时的处理流程可以包括以下处理步骤:
[0097]第一步、序列化缓存数据类型,实现Externalizable接口 ;
[0098]第二步、实例化缓存管理类,指定缓存策略,即内存、文件或者是数据库,同时还可以选择性的指定缓存最大限制;
[0099]第三步、指定存储标识KEY和序列化的数据,使用缓存管理类对应的缓存功能;
[0100]第四步、判断KEY和VALUE的合法性,必须均不为空;
[0101]第五步、计算待存储数据的大小,确保其小于或等于缓存最大限制;
[0102]第六步、判断缓存中标识KEY是否已经存在,如果存在,新生成的VALUE值将会覆盖原始值进行存储,根据指定的缓存策略判断是否有足够的存入空间来存储待缓存的数据,如果没有,则需要首先删除老化数据;
[0103]在该优选实施例中,老化数据的判断方式如下:在内存缓存机制中LinkedHashMap可以按照时间顺序进行存储,因此,排在最前面的即为已经老化的数据。在文件缓存机制中,数据库除了保存有KEY文件名,还有对应文件的创建时间,由此可以根据该时间进行判断。数据库缓存机制与文件缓存相类似,在数据存储时会存储一个时间字段,查询该时间字段就可以获知老化数据。
[0104]第七步、向缓存中写入该Κ-V值,在内存缓存机制中已经构建了依照访问顺序排列的LinkedHashMap,存入数据即是增加一条映射条目;文件缓存机制可以利用数据库保存文件缓存相关信息,在有数据需要存入时,首先根据KEY生成一个对应的文件名,然后向该文件中写入数据;同时更新数据库,数据库缓存机制即为向数据库中新增一个条目;
[0105]第八步、如果是KEY已经存在的数据缓存,则会通过回调,返回Κ-V旧值;
[0106]在使用上述android平台缓存工具获取数据时,如果在已知KEY的情况下,可以直接使用获取缓存数据功能,通过KEY值查找到对应数据。如果不知道KEY,则可以通过缓存管理类的获取KEY集合功能,遍历找到所有的KEY,然后找到所需KEY值后便可以进行查询。
[0107]图3是根据本发明实施例的数据的存储装置的结构框图。如图3所示,该数据的存储装置可以包括:第一获取模块100,用于向网络侧设备发起请求消息,获取待缓存的网络数据;存储模块102,用于从缓存实体对象集合中为网络数据选取一个或多个缓存实体对象,并直接将获取到的第一类型的网络数据存储至一个或多个缓存实体对象中,或者,将经过序列化处理后的第二类型的网络数据存储至一个或多个缓存实体对象中。
[0108]采用如图3所示的装置,解决了相关技术中所提供的数据缓存解决方案过分地依赖远程网络服务,同时还需大量地耗费网络流量以及移动终端电量的问题,进而可以减少对网络的依赖,节省网络流量和移动终端的电量。
[0109]优选地,如图4所示,上述装置还可以包括:第二获取模块104,用于获取第一类型的网络数据的大小;第一判断模块106,用于判断第一类型的网络数据的大小是否小于或等于第一缓存实体对象中的剩余存储空间的大小,其中,第一缓存实体对象在一个或多个缓存实体对象中的存储优先级别最高;第一处理模块108,用于在第一判断模块输出为否时,按照预设规则将第一缓存实体对象中当前存储的部分或全部数据进行删除,或者,将第一缓存实体对象中存储的部分或全部数据转移至除第一缓存实体对象之外的其他缓存实体对象中,其中,上述预设规则可以包括但不限于以下之一:LRU规则、在缓存实体对象中存储的时间。
[0110]优选地,如图4所示,上述装置还可以包括:第三获取模块110,用于获取第二类型的网络数据的大小;第二判断模块112,用于判断第二类型的网络数据的大小是否小于或等于第一缓存实体对象中的剩余存储空间的大小;第二处理模块114,用于在第二判断模块输出为否时,按照预设规则将第一缓存实体对象中当前存储的部分或全部数据进行删除,或者,将第一缓存实体对象中存储的部分或全部数据转移至除第一缓存实体对象之外的其他缓存实体对象中,其中,上述预设规则可以包括但不限于以下之一:LRU规则、在缓存实体对象中存储的时间。
[0111]优选地,如图4所示,上述装置还可以包括:设置模块116,用于为第一类型的网络数据或者第二类型的网络数据设置存储标识,其中,存储标识用于在将第一类型的网络数据或者第二类型的网络数据存储至一个或多个缓存实体对象中之后查找第一类型的网络数据或者第二类型的网络数据。
[0112]优选地,存储模块102可以包括:判断单元(图中未示出),用于判断一个或多个缓存实体对象中是否已经存在存储标识;处理单元(图中未示出),用于在判断单元输出为是时,则直接采用第一类型的网络数据或者第二类型的网络数据对在一个或多个缓存实体对象中当前存储的与存储标识对应的数据进行覆盖,或者在对与存储标识对应的数据进行回调处理后,再采用第一类型的网络数据或者第二类型的网络数据对与存储标识对应的数据进行覆盖。
[0113]优选地,设置模块116可以包括:遍历单元(图中未示出),用于遍历一个或多个缓存实体对象中已经存在的全部存储标识;确定单元(图中未示出),用于根据遍历结果确定为第一类型的网络数据或者第二类型的网络数据设置的存储标识,其中,设置的存储标识与已经存在的全部存储标识均不相同。
[0114]从以上的描述中,可以看出,上述实施例实现了如下技术效果(需要说明的是这些效果是某些优选实施例可以达到的效果):采用本发明所提供的技术方案,实现在本地的网络数据缓存,当本地应用程序频繁地请求网络数据以及对各种资源的需求较多时,可以通过利用该缓存组件,大大提高移动终端的处理性能,同时还能够减少对网络发起的请求。本发明在构建了内存、文件和数据库三种基本的缓存类别的基础上,还预留了对其他缓存制度的扩展使用,支持对网络图形的缓存,备份内容无限制、可以备份任意数据、文件、图片等从网络下载的信息。
[0115]显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
[0116]以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种数据的存储方法,其特征在于,包括: 向网络侧设备发起请求消息,获取待缓存的网络数据; 从缓存实体对象集合中为所述网络数据选取一个或多个缓存实体对象,并直接将获取到的第一类型的网络数据存储至所述一个或多个缓存实体对象中,或者,将经过所述序列化处理后的第二类型的网络数据存储至所述一个或多个缓存实体对象中。
2.根据权利要求1所述的方法,其特征在于,在将所述第一类型的网络数据存储至所述一个或多个缓存实体对象中之前,还包括: 获取所述第一类型的网络数据的大小; 判断所述第一类型的网络数据的大小是否小于或等于第一缓存实体对象中的剩余存储空间的大小,其中,所述第一缓存实体对象在所述一个或多个缓存实体对象中的存储优先级别最闻; 如果否,则按照预设规则将所述第一缓存实体对象中当前存储的部分或全部数据进行删除,或者,将所述第一缓存实体对象中存储的所述部分或全部数据转移至除所述第一缓存实体对象之外的其他缓存实体对象中,其中,所述预设规则包括以下之一:最近最少使用LRU规则、在所述缓存实体对象中存储的时间。
3.根据权利要求1所述的方法,其特征在于,在将所述第二类型的网络数据存储至所述一个或多个缓存实体对象中之前,还包括: 获取所述第二类型的网络数据的大小; 判断所述第二类型的网络数据的大小是否小于或等于第一缓存实体对象中的剩余存储空间的大小; 如果否,则按照预设规则将所述第一缓存实体对象中当前存储的部分或全部数据进行删除,或者,将所述第一缓存实体对象中存储的所述部分或全部数据转移至除所述第一缓存实体对象之外的其他缓存实体对象中,其中,所述预设规则包括以下之一 ?丄RU规则、在所述缓存实体对象中存储的时间。
4.根据权利要求1所述的方法,其特征在于,在将所述第一类型的网络数据存储至所述一个或多个缓存实体对象中,或者,将所述第二类型的网络数据存储至所述一个或多个缓存实体对象中之前,还包括: 为所述第一类型的网络数据或者所述第二类型的网络数据设置存储标识,其中,所述存储标识用于在将所述第一类型的网络数据或者所述第二类型的网络数据存储至所述一个或多个缓存实体对象中之后查找所述第一类型的网络数据或者所述第二类型的网络数据。
5.根据权利要求4所述的方法,其特征在于,将所述第一类型的网络数据存储至所述一个或多个缓存实体对象中,或者,将所述第二类型的网络数据存储至所述一个或多个缓存实体对象中包括: 判断所述一个或多个缓存实体对象中是否已经存在所述存储标识; 如果存在,则直接采用所述第一类型的网络数据或者所述第二类型的网络数据对在所述一个或多个缓存实体对象中当前存储的与所述存储标识对应的数据进行覆盖,或者在对与所述存储标识对应的数据进行回调处理后,再采用所述第一类型的网络数据或者所述第二类型的网络数据对与所述存储标识对应的数据进行覆盖。
6.根据权利要求4所述的方法,其特征在于,为所述第一类型的网络数据或者所述第二类型的网络数据设置所述存储标识包括: 遍历所述一个或多个缓存实体对象中已经存在的全部存储标识; 根据遍历结果确定为所述第一类型的网络数据或者所述第二类型的网络数据设置的存储标识,其中,所述设置的存储标识与所述已经存在的全部存储标识均不相同。
7.根据权利要求1至6中任一项所述的方法,其特征在于,所述缓存实体对象集合包括以下至少之一: 初始配置的内存缓存实体对象; 初始配置的文件缓存实体对象; 初始配置的数据库缓存实体对象; 用户自定义的扩展缓存实体对象。
8.一种数据的存储装置,其特征在于,包括: 第一获取模块,用于向网络侧设备发起请求消息,获取待缓存的网络数据; 存储模块,用于从缓存实体对象集合中为所述网络数据选取一个或多个缓存实体对象,并直接将获取到的第一类型的网络数据存储至所述一个或多个缓存实体对象中,或者,将经过所述序列化处理后的第二类型的网络数据存储至所述一个或多个缓存实体对象中。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括: 第二获取模块,用于获取所述第一类型的网络数据的大小; 第一判断模块,用于判断所述第一类型的网络数据的大小是否小于或等于第一缓存实体对象中的剩余存储空间的大小,其中,所述第一缓存实体对象在所述一个或多个缓存实体对象中的存储优先级别最高; 第一处理模块,用于在所述第一判断模块输出为否时,按照预设规则将所述第一缓存实体对象中当前存储的部分或全部数据进行删除,或者,将所述第一缓存实体对象中存储的所述部分或全部数据转移至除所述第一缓存实体对象之外的其他缓存实体对象中,其中,所述预设规则包括以下之一:最近最少使用LRU规则、在所述缓存实体对象中存储的时间。
10.根据权利要求8所述的装置,其特征在于,所述装置还包括: 第三获取模块,用于获取所述第二类型的网络数据的大小; 第二判断模块,用于判断所述第二类型的网络数据的大小是否小于或等于第一缓存实体对象中的剩余存储空间的大小; 第二处理模块,用于在所述第二判断模块输出为否时,按照预设规则将所述第一缓存实体对象中当前存储的部分或全部数据进行删除,或者,将所述第一缓存实体对象中存储的所述部分或全部数据转移至除所述第一缓存实体对象之外的其他缓存实体对象中,其中,所述预设规则包括以下之一:最近最少使用LRU规则、在所述缓存实体对象中存储的时间。
11.根据权利要求8所述的装置,其特征在于,所述装置还包括: 设置模块,用于为所述第一类型的网络数据或者所述第二类型的网络数据设置存储标识,其中,所述存储标识用于在将所述第一类型的网络数据或者所述第二类型的网络数据存储至所述一个或多个缓存实体对象中之后查找所述第一类型的网络数据或者所述第二类型的网络数据。
12.根据权利要求11所述的装置,其特征在于,所述存储模块包括: 判断单元,用于判断所述一个或多个缓存实体对象中是否已经存在所述存储标识; 处理单元,用于在所述判断单元输出为是时,则直接采用所述第一类型的网络数据或者所述第二类型的网络数据对在所述一个或多个缓存实体对象中当前存储的与所述存储标识对应的数据进行覆盖,或者在对与所述存储标识对应的数据进行回调处理后,再采用所述第一类型的网络数据或者所述第二类型的网络数据对与所述存储标识对应的数据进行覆盖。
13.根据权利要求11所述的装置,其特征在于,所述设置模块包括: 遍历单元,用于遍历所述一个或多个缓存实体对象中已经存在的全部存储标识; 确定单元,用于根据遍历结果确定为所述第一类型的网络数据或者所述第二类型的网络数据设置的存储标识,其中,所述设置的存储标识与所述已经存在的全部存储标识均不相同。
【文档编号】G06F17/30GK104346345SQ201310315361
【公开日】2015年2月11日 申请日期:2013年7月24日 优先权日:2013年7月24日
【发明者】吴新玉, 丁岩, 吴亮, 陈小强 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1