一种处理数据的方法和装置的制造方法

文档序号:8223535阅读:148来源:国知局
一种处理数据的方法和装置的制造方法
【技术领域】
[0001]本发明涉及计算机技术领域,特别地涉及一种处理数据的方法和装置。
【背景技术】
[0002]随着计算机技术的发展,各种业务对于数据的访问越来越频繁,所要求的速度也越来越高。对此,缓存技术成为一种有助于提高数据访问速度的广泛采用的技术。缓存技术可以分为两种,一种是本地缓存系统,另一种是分布式缓存系统。
[0003]在本地缓存系统技术中,直接将数据缓存与当前应用内存之中,如java开发的系统,则存放于jvm所分配的堆内存之中,系统通过句柄直接访问该段内存即可。此方案因为直接访问的本地服务器内存,因此访问速度快,能够存储所使用开发语言的对象,减少数据反序列化带来的性能消耗。此方案的主要缺点是不能够实现跨平台和跨服务器的方案,不能作为分布式的一种实现方案,并且内存大小受到单台服务器最大内存大小所限制。
[0004]在分布式缓存系统(如redis,memorycached等)技术中,缓存系统一般由第三方软件实现,通过应用程序编程接口 api (—般提供软件开发工具包sdk)方式来实现跨平台和跨服务器的内存存储和访问方案。此方案的优点主要是实现了跨平台和跨服务器,内存大小可通过扩展服务器来实现水平扩展。其主要不足之处在于存储方式相对单一,不能存储复杂的对象,一般为string方式存储,再通过序列化来构造跨平台的对象,这样导致传输过程消耗网络1过高,在系统到缓存之间网络交叉的情况下,会大大降低访问速度,影响用户体验。

【发明内容】

[0005]有鉴于此,本发明提供一种处理数据的方法和装置,能够使缓存系统能够跨平台和跨服务器,并且有较高的访问速度。
[0006]为实现上述目的,根据本发明的一个方面,提供了一种处理数据的方法。
[0007]本发明的处理数据的方法包括:接收数据请求方发送的获取数据的请求,根据本地缓存中该数据的版本号与分布式缓存中该数据的版本号进行判断:若二者有效并且前者等于后者,则根据本地缓存的内容将该数据提供给所述数据请求方;若二者有效并且前者不等于后者,或二者中至少一者无效,则从持久化数据源中查询出该数据然后提供给所述数据请求方;其中,所述分布式缓存中该数据的版本号在所述持久化数据源中的该数据被更新时更新。
[0008]可选地,在所述二者有效并且前者小于后者的情况下,将前者修改为后者,并且根据所述持久化数据源中的该数据更新本地缓存的该数据。
[0009]可选地,根据所述持久化数据源中的该数据更新本地缓存的该数据的步骤包括:将所述持久化数据源中的该数据的索引保存到本地缓存中。
[0010]可选地,在所述二者中至少一者无效的情况下,根据所述持久化数据源中的该数据更新本地缓存的该数据;并且若是前者无效,则将前者修改为后者;若是后者无效,则将前者修改为预设值。
[0011]可选地,还包括:设置本地缓存的超时时间,在接收到数据请求方发送的获取数据的请求的时刻距设置该超时时间的时刻大于该超时时间的情况下,将持久化数据源中的该数据提供给该数据请求方,并且将本地缓存中该数据的版本号修改为分布式缓存中该数据的版本号,以及根据所述持久化数据源中的该数据更新本地缓存的该数据。
[0012]可选地,所述持久化数据源中的数据为非序列化数据。
[0013]根据本发明的另一方面,提供了一种处理数据的装置。
[0014]本发明的处理数据的装置包括:请求接受单元,用于接收数据请求方发送的获取数据的请求;版本比较单元,用于根据本地缓存中该数据的版本号与分布式缓存中该数据的版本号判断二者是否有效以及是否相等;本地缓存查询单元,用于在本地缓存中该数据的版本号与分布式缓存中该数据的版本号二者有效并且前者等于后者的情况下,根据本地缓存的内容将该数据提供给所述数据请求方;数据查询单元,用于在所述二者有效并且前者不等于后者,或者在二者中至少一者无效的情况下,则从持久化数据源中查询出该数据然后提供给所述数据请求方。
[0015]可选地,还包括本地缓存持久单元,用于在所述二者有效并且前者小于后者的情况下,将前者修改为后者,并且根据所述持久化数据源中的该数据更新本地缓存的该数据。
[0016]可选地,所述本地缓存持久单元还用于将所述持久化数据源中的该数据的索引保存到本地缓存中。
[0017]可选地,所述本地缓存持久单元还用于在所述二者中至少一者无效的情况下,根据所述持久化数据源中的该数据更新本地缓存的该数据;并且若是前者无效,则将前者修改为后者;若是后者无效,则将前者修改为预设值。
[0018]可选地,所述请求接受单元还用于保存设置的本地缓存的超时时间,以及判断接收到的数据请求方发送的获取数据的请求的时刻距设置该超时时间的时刻是否大于该超时时间;所述数据查询单元还用于在所述请求接受单元的上述判断结果为是的情况下,将持久化数据源中的该数据提供给该数据请求方;所述本地缓存持久单元还用于在所述请求接受单元的上述判断结果为是的情况下,将本地缓存中该数据的版本号修改为分布式缓存中该数据的版本号,以及根据所述持久化数据源中的该数据更新本地缓存的该数据。
[0019]可选地,所述持久化数据源中的数据为非序列化数据。
[0020]根据本发明的技术方案,在分布式缓存中保存持久化数据源中的数据的版本号,并在本地缓存中保存本地缓存数据的版本号,通过对二者进行比较来确定本地缓存中是否为最新数据,并根据判断结果向数据请求方提供本地缓存数据或者从持久化数据源中获取数据然后提供给数据请求方。这种方式无需在分布式缓存中缓存持久化数据源中的数据,在向数据请求方提供数据时主要通过本地缓存或者持久化数据源来提供,无需读取远端分布式缓存,因此避免了传输过程消耗网络1过高,有较高的访问速度;并且各个本地系统都可以使用上述方案,使缓存系统实现了跨平台和跨服务器,成为分布式的一种实现方案。在缓存数据变更的情况下,只需简单地改变缓存数据版本号即可。另外,持久化数据源中可以保存非序列化数据,无需消耗资源进行反序列化,从而有助于降低系统开销。
【附图说明】
[0021]附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
[0022]图1是与本发明实施例有关的各系统的示意图;
[0023]图2是根据本发明实施例的处理数据的主要步骤的示意图;
[0024]图3是根据本发明实施例的处理数据的装置的主要模块的示意图。
【具体实施方式】
[0025]以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
[0026]图1是与本发明实施例有关的各系统的示意图。在本发明实施例中,本发明的处理数据的装置30与分布式缓存客户端11连接,后者连接至分布式缓存系统12。该处理数据的装置30还与数据请求方13、持久化数据源14连接。数据请求方13可以是服务或方法端,包含一个或多个数据调用者。持久化数据源14是关系型或非关系型数据库,保存在磁盘或其他永久性存储介质中。缓存数据是缓存在本地计算机内存中,处理数据的装置30同样设置在本地计算机中。因为内存容量有限,所以这里所说的缓存在本地计算机内存中,可以不是直接保存上述的缓存数据本身,而是将需要缓存的数据的索引保存在本地内存,该数据仍保存在持久化数据源14中。在分布式缓存系统12中,无需保存上述的缓存数据,而是保存该缓存数据的版本号,在持久化数据源14中该缓存数据被更新时,分布式缓存系统12中该缓存数据的版本号也被更新。在上述本地计算机的本地缓存中,同样保存本地缓存数据的本地缓存中,除了上述的索引,还保存本地缓存数据的版本号。该版本号可能与分布式缓存中的版本号相同或不同。基于上述方案,以下结合图1和图2说明本发明实施例中处理数据的装置30的数据处理方式。图2是根据本发明实施例的处理数据的主要步骤的示意图,各步骤由处理数据的装置30完成。
[0027]步骤S21:接收数据请求方发送的获取数据的请求。该请求中包含数据的标识,例如数据的唯一定位标识键。
[0028]步骤S22:判断本地缓存中该数据的版本号与分布式缓存中该数据的版本号是否有效。因为这里应用了缓存技术,基于缓存的特性,在计算机重新启动或者发生某些故障的情况下,缓存数据会丢失,本实施例中,在这种情况下,将缓存数据的版本设置为O或者空(null)。如果二者有效,进入步骤S23 ;否则进入步骤S25,该步骤S25处理的是二者中至少一者无效的情况。
[0029]步骤S23:判断二者是否相等。若相等,则进入步骤S24,否则进入步骤S25。
[0030]步骤S24:根据本地缓存的内容将该数据提供给数据请求方。如果本地缓存的是数据的索引,则根据索引从持久化数据源查找出数据然后发送给数据请求方;如果本地缓存的是该数据本身,则直接发送给数据请求方。
[0031]步骤S25:从持久化数据源中查询出该数据,然后将该数据发送给数据请求方。
[0032]按照以上步骤,数据主要是保存在本地缓存中,分布式缓存保存缓存数据的版本号,以此来检验本地缓存数据是否与当前持久化数据源的内容一致。按照图2示出的主要是向数据请求方提供数据的步骤,另外对于处理数据的装置30来说,在图2示出的流程中,还进行一些其他操作。以下分别加以说明。
[0033]如果步骤S23中的判断结果是二者不相同
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1