缓存失效方法和装置制造方法

文档序号:6527305阅读:175来源:国知局
缓存失效方法和装置制造方法
【专利摘要】本发明公开了一种缓存失效方法。所述方法包括:通过第一键值对Key1:Value1的Map方式在缓存中存取第一数据,所述Key1中包含基本码和所述第一数据失效前的第一随机码,所述Value1为所述第一数据的值;所述第一数据的时效性发生改变,使所述第一数据失效;通过第二键值对Key2:Value2的Map方式在缓存中存取第二数据,所述Key2中包含所述基本码和所述第一数据失效后的第二随机码,所述Value2为所述第二数据的值。本发明还相应提供了一种缓存失效装置。应用本发明技术方案,能够提高清除缓存中数据的效率。
【专利说明】缓存失效方法和装置
【技术领域】
[0001]本发明涉及计算机【技术领域】,特别是涉及一种缓存失效方法和装置。
【背景技术】
[0002]企业管理系统是面向企业的,能够帮助企业优化工作流程,提高工作效率的信息化系统。企业管理系统,如ERP (Enterprise Resource Planning,企业资源计划)系统在运行中需要与数据库进行交互,从数据库中读取数据进行处理。
[0003]企业管理系统如果重复地从数据库中取出相同的数据,就会极大地增加数据库的负载,造成性能问题。缓存是解决企业管理系统与数据库交互性能瓶颈的有效途径,例如在ERP系统中可以应用分布式缓存来提高查询性能,减少数据库的压力。企业管理系统从数据库中取出数据,并保存到缓存中,在需要使用该数据时直接从缓存读取,减少了与数据库的交互,并提高了数据读取速度。
[0004]数据保存在缓存中,随着数据时效性的改变,就会涉及到缓存失效问题,即将缓存中旧的数据及时清除。传统技术中,缓存是依靠键值对(Key-Value)的Map方式保存数据,其中Key为缓存中保存(获取)数据的唯一标识,Value为保存在缓存中数据的值。因此,传统技术中,缓存失效是根据Key将数据从缓存中逐条删除。当企业管理系统所使用的缓存数据量比较大时,传统技术的处理就会比较耗时,从而造成性能问题。

【发明内容】

[0005]基于此,有必要提供一种缓存失效方法和装置,应用本方法和装置,能够提高清除缓存中数据的效率。
[0006]一种缓存失效方法,包括:
[0007]通过第一键值对Keyl:Valuel的Map方式在缓存中存取第一数据,所述Keyl中包含基本码和所述第一数据失效前的第一随机码,所述Valuel为所述第一数据的值;
[0008]所述第一数据的时效性发生改变,使所述第一数据失效;
[0009]通过第二键值对Key2:Value2的Map方式在缓存中存取第二数据,所述Key2中包含所述基本码和所述第一数据失效后的第二随机码,所述Value2为所述第二数据的值。
[0010]在其中一个实施例中,在所述通过第一键值对Keyl:Valuel的Map方式在缓存中存取第一数据的步骤之前,所述方法还包括:
[0011]从数据库中读取所述第一数据;
[0012]在所述通过第二键值对Key2:Value2的Map方式在缓存中存取第二数据的步骤之前,所述方法还包括:
[0013]从数据库中读取所述第二数据。
[0014]在其中一个实施例中,所述基本码中包括存取所述第一数据和所述第二数据对应用户的用户标识,以及所述第一数据和所述第二数据对应的应用标识。
[0015]在其中一个实施例中,所述通过第一键值对Keyl:Valuel的Map方式在缓存中存取第一数据的步骤,包括:
[0016]生成第一随机码,并以所述基本码和所述第一随机码组成所述Keyl ;
[0017]将第一键值对Keyl:Valuel保存到缓存中;
[0018]通过所述Keyl在缓存中获取所述Valuel对应的所述第一数据;
[0019]所述通过第二键值对Key2:Value2的Map方式在缓存中存取第二数据的步骤,包括:
[0020]生成第二随机码,并以所述基本码和所述第二随机码组成所述Key2 ;
[0021]将第二键值对Key2:Value2保存到缓存中;
[0022]通过所述Key2在缓存中获取所述Value2对应的所述第二数据。
[0023]在其中一个实施例中,所述第一数据的时效性发生改变,使所述第一数据失效的步骤包括:
[0024]所述基本码中的用户标识所对应的用户权限发生变化,或所述基本码中的应用标识所对应的应用权限发生改变,使所述第一数据失效。
[0025]一种缓存失效装置,包括:
[0026]缓存保存模块,用于在第一数据失效前通过第一键值对Keyl:Valuel的Map方式在缓存中保存第一数据,所述Keyl中包含基本码和所述第一数据失效前的第一随机码,所述Valuel为所述第一数据的值;所述缓存保存单元,还用于在所述第一数据失效后通过第二键值对Key2:Value2的Map方式在缓存中保存第二数据,所述Key2中包含所述基本码和所述第一数据失效后的第二随机码,所述Value2为所述第二数据的值;
[0027]时效监控模块,用于获取所述第一数据的时效性发生改变的信息;
[0028]缓存读取模块,用于在所述第一数据失效前通过所述Keyl从缓存中获取第一数据,以及在所述第一数据失效后通过所述Key2从缓存中获取第二数据。
[0029]在其中一个实施例中,所述装置还包括数据库读取模块,所述数据库读取模块用于从数据库中读取所述第一数据及所述第二数据。
[0030]在其中一个实施例中,所述基本码中包括存取所述第一数据和所述第二数据对应用户的用户标识,以及所述第一数据和所述第二数据对应的应用标识。
[0031]在其中一个实施例中,所述缓存保存模块包括:
[0032]随机码生成单元,用于在所述第一数据失效前生成第一随机码,以及在所述第一数据失效后生成第二随机码;
[0033]键值对设置单元,用于在所述第一数据失效前,以所述基本码和所述第一随机码组成所述Keyl,通过第一键值对Keyl:Valuel保存所述第一数据;所述键值对设置单元,还用于在所述第一数据失效后,以所述基本码和所述第二随机码组成所述Key2,通过第二键值对Key2:Value2保存所述第二数据。
[0034]在其中一个实施例中,所述时效监控装置,用于获取所述基本码中的用户标识所对应的用户权限发生变化的信息,或所述基本码中的应用标识所对应的应用权限发生改变的信息,从而得到所述第一数据的时效性发生改变的信息。
[0035]上述缓存失效方法和装置,在第一数据失效前,通过第一键值对Keyl:Valuel的方式在缓存中存取第一数据,其中Keyl包括基本码和第一随机码,在第一数据失效后,以基本码和第二随机码作为Key2,通过第二键值对Key2:Value2的方式在缓存中存取第二数据。从而间接使第一数据失效,相比与传统技术依靠Key值,逐条删除缓存中的数据,提高了缓存失效处理过程的效率。
【专利附图】

【附图说明】
[0036]图1为一个实施例中的缓存失效方法的流程示意图;
[0037]图2为一个实施例中的缓存失效方法的时序图;
[0038]图3为一个实施例中的缓存失效装置的结构示意图。
【具体实施方式】
[0039]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0040]参见图1,在一个实施例中提供了 一种缓存失效方法。该方法可以应用于企业管理系统将存储在缓存中的数据进行缓存失效处理,其中缓存企业管理系统可以是ERP系统,缓存可以是分布式缓存,如Memcached。该方法包括如下流程:
[0041]步骤102,通过第一键值对Keyl:Valuel的Map方式在缓存中存取第一数据。
[0042]具体的,第一数据为企业管理系统从数据库中读取的数据,在企业管理系统需要多次重复使用第一数据时,企业管理系统将第一数据保存在缓存中。保存的方式采用传统的Map方式,其中Map可以是Hash (哈希)Map,以键值对Key:Value保存数据,Key是Map中存取数据的唯一标识,Value为存取的数据的值。企业管理系统可以以第一键值对Keyl:Valuel将第一数据保存在缓存中,其中Keyl包括基本码和第一随机码组合而成,基本码可以是企业管理系统中读取数据的用户对应的用户标识,也可以是处理该数据的应用的应用标识,在本实施例中,基本码为二者的组合,即企业管理系统中读取第一数据和第二数据的用户标识与应用标识的组合(本实施例中,读取数据的用户和应用未发生变化)。Valuel为保存的第一数据的值。
[0043]步骤104,第一数据的时效性发生改变。
[0044]具体的,在本实施例中,随着企业管理系统中读取数据的用户的权限发生改变,或使用数据的应用的权限发生改变,都会使得第一数据失效。
[0045]步骤106,通过第二键值对Key2:Value2的Map方式在缓存中存取第二数据。
[0046]具体的,企业管理系统在第一数据失效后,生成新的第二随机码,并以基本码和第二随机码组合成Key2,以第二键值对Key2:Value2保存企业管理系统从数据库获取的第二数据,从而间接使第一数据失效。
[0047]上述缓存失效方法,在第一数据失效前,通过第一键值对Keyl:Valuel的方式在缓存中存取第一数据,其中Keyl包括基本码和第一随机码,在第一数据失效后,以基本码和第二随机码作为Key2,通过第二键值对Key2:Value2的方式在缓存中存取第二数据。从而间接使第一数据失效,相比与传统技术依靠Key值,逐条删除缓存中的数据,提高了缓存失效处理过程的效率。
[0048]参见图2,在一个实施例中,提供了一种缓存失效方法的时序图。在该缓存失效方法的应用场景中,涉及到信息系统、缓存和数据库,其中信息系统可以但不限于是ERP系统,缓存可以是分布式缓存,数据库可以是关系型数据库等。在该时序图中,处理流程包括:
[0049]202,信息系统从数据库中获取第一数据。
[0050]204,信息系统所生成第一随机码R1。
[0051]206,信息系统通过基本码+第一随机码R1:Valuel保存第一数据。
[0052]其中,基本码为读取数据的用户对应的用户标识(ID)与使用数据的应用的应用标识。Valuel为保存的第一数据的数据值。
[0053]208,信息系统通过基本码+第一随机码R1从缓存中获取数据。
[0054]210,缓存向信息系统返回Valuel。
[0055]212,第一数据时效发生改变。
[0056]具体的,如用户权限发生改变或应用权限发生改变,会使得第一数据失效。
[0057]214,信息系统生成新的第二随机码R2。
[0058]216,信息系统通过基本码+第二随机码R2从缓存中获取数据。
[0059]218,缓存向信息系统返回为空。
[0060]220,信息系统从数据库中获取第二数据。
[0061]222,信息系统通过基本码+第二随机码R2:Value2保存第二数据。
[0062]224,信息系统通过基本码+第二随机码R2从缓存中获取数据。
[0063]在步骤224之后,只要第二数据未失效,信息系统就不会生成新的随机码,并在每次信息系统以基本码+第二随机码R2请求获取数据时,缓存都会向信息系统返回第二数据对应的Value。在第二数据失效后,信息系统生成新的随机码。
[0064]本实施例所提供的缓存失效方法,尤其适用于对大批量的数据进行缓存失效处理。在基本码中包括用户标识和应用标识,就可以对应于信息系统的多个用户,以及各个用户对应的多个应用,在数据进行缓存失效时,只需改变存取数据所要使用的随机码,对用户标识和应用标识无需改变,就能使多个用户多个应用的数据间接失效。
[0065]参见图3,在一个实施例中,提供了一种缓存失效装置。该缓存失效装置可以应用于企业管理系统中。该缓存失效装置包括数据库读取模块302、缓存保存模块304、缓存读取模块306以及时效监控模块308。
[0066]该装置的工作原理如下:
[0067]数据库读取模块302从数据库中读取第一数据,以供企业管理系统对其进行处理。
[0068]缓存保存模块304以第一键值对Keyl:Valuel将第一数据保存在缓存中。其中缓存保存模块304包括随机码生成单元和键值对设置单元(图中未示出),随机码生成单元生成第一随机码,键值对设置单元将基本码和第一随机码组合为Keyl,将Valuel设为第一数据的值,保存在缓存中。基本码可以是读取数据的用户标识和应用标识。
[0069]缓存读取模块306在企业管理系统需要使用第一数据时,通过Keyl中缓存中读取第一数据。
[0070]时效监控模块308在获取到用户权限或应用权限发生变化时,从而确定第一数据失效。
[0071]在第一数据失效后,随机码生成单元会将第一随机码更新为第二随机码。数据库读取模块302从数据库读取新的第二数据。键值对设置单元通过Key2:Value2将第二数据保存在缓存中,其中Key2为基本码和第二随机码的组合,Value2为第二数据的值。在缓存读取模块306以Key2请求获取数据时,缓存会向其返回第二数据。
[0072]本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory, ROM)或随机存储记忆体(Random AccessMemory, RAM)等。
[0073]以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
【权利要求】
1.一种缓存失效方法,其特征在于,所述方法包括:通过第一键值对Keyl:Valuel的Map方式在缓存中存取第一数据,所述Keyl中包含基本码和所述第一数据失效前的第一随机码,所述Valuel为所述第一数据的值;所述第一数据的时效性发生改变,使所述第一数据失效;通过第二键值对Key2:Value2的Map方式在缓存中存取第二数据,所述Key2中包含所述基本码和所述第一数据失效后的第二随机码,所述Value2为所述第二数据的值。
2.根据权利要求1所述的方法,其特征在于,在所述通过第一键值对Keyl:Valuel的Map方式在缓存中存取第一数据的步骤之前,所述方法还包括:从数据库中读取所述第一数据;在所述通过第二键值对Key2:Value2的Map方式在缓存中存取第二数据的步骤之前,所述方法还包括:从数据库中读取所述第二数据。
3.根据权利要求2所述的方法,其特征在于,所述基本码中包括存取所述第一数据和所述第二数据对应用户的用户标识,以及所述第一数据和所述第二数据对应的应用标识。
4.根据权利要求3所述的方法,其特征在于,所述通过第一键值对Keyl:Valuel的Map方式在缓存中存取第一数据的步骤,包括:生成第一随机码, 并以所述基本码和所述第一随机码组成所述Keyl ;将第一键值对Keyl:Valuel保存到缓存中;通过所述Keyl在缓存中获取所述Valuel对应的所述第一数据;所述通过第二键值对Key2:Value2的Map方式在缓存中存取第二数据的步骤,包括:生成第二随机码,并以所述基本码和所述第二随机码组成所述Key2 ;将第二键值对Key2:Value2保存到缓存中;通过所述Key2在缓存中获取所述Value2对应的所述第二数据。
5.根据权利要求4所述的方法,其特征在于,所述第一数据的时效性发生改变,使所述第一数据失效的步骤包括:所述基本码中的用户标识所对应的用户权限发生变化,或所述基本码中的应用标识所对应的应用权限发生改变,使所述第一数据失效。
6.一种缓存失效装置,其特征在于,所述装置包括:缓存保存模块,用于在第一数据失效前通过第一键值对Keyl:Valuel的Map方式在缓存中保存第一数据,所述Keyl中包含基本码和所述第一数据失效前的第一随机码,所述Valuel为所述第一数据的值;所述缓存保存单元,还用于在所述第一数据失效后通过第二键值对Key2:Value2的Map方式在缓存中保存第二数据,所述Key2中包含所述基本码和所述第一数据失效后的第二随机码,所述Value2为所述第二数据的值;时效监控模块,用于获取所述第一数据的时效性发生改变的信息;缓存读取模块,用于在所述第一数据失效前通过所述Keyl从缓存中获取第一数据,以及在所述第一数据失效后通过所述Key2从缓存中获取第二数据。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括数据库读取模块,所述数据库读取模块用于从数据库中读取所述第一数据及所述第二数据。
8.根据权利要求7所述的装置,其特征在于,所述基本码中包括存取所述第一数据和所述第二数据对应用户的用户标识,以及所述第一数据和所述第二数据对应的应用标识。
9.根据权利要求8所述的装置,其特征在于,所述缓存保存模块包括:随机码生成单元,用于在所述第一数据失效前生成第一随机码,以及在所述第一数据失效后生成第二随机码;键值对设置单元,用于在所述第一数据失效前,以所述基本码和所述第一随机码组成所述Keyl,通过第一键值对Keyl:Valuel保存所述第一数据;所述键值对设置单元,还用于在所述第一数据失效后,以所述基本码和所述第二随机码组成所述Key2,通过第二键值对Key2:Value2保存所述第二数据。
10.根据权利要求9所述的装置,其特征在于,所述时效监控装置,用于获取所述基本码中的用户标识所对应的用户权限发生变化的信息,或所述基本码中的应用标识所对应的应用权限发生改变的信息,`从而得到所述第一数据的时效性发生改变的信息。
【文档编号】G06F12/08GK103678173SQ201310754652
【公开日】2014年3月26日 申请日期:2013年12月31日 优先权日:2013年12月31日
【发明者】颜亮 申请人:金蝶软件(中国)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1