CN103548005B - 替换缓存对象的方法和装置 - Google Patents
替换缓存对象的方法和装置 Download PDFInfo
- Publication number
- CN103548005B CN103548005B CN201180003186.0A CN201180003186A CN103548005B CN 103548005 B CN103548005 B CN 103548005B CN 201180003186 A CN201180003186 A CN 201180003186A CN 103548005 B CN103548005 B CN 103548005B
- Authority
- CN
- China
- Prior art keywords
- cache object
- weighted value
- cache
- access times
- value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种替换缓存对象的方法和装置。该方法包括:接收需要存入缓存器的第一缓存对象;在该缓存器中保存的至少一个缓存对象的数量或占用的内存达到最大值时,获取该至少一个缓存对象中每个缓存对象的权重值;根据该每个缓存对象的权重值,确定该至少一个缓存对象中权重值最小的第二缓存对象;将该缓存器中保存的该第二缓存对象替换为该第一缓存对象。该装置包括:接收模块、获取模块、第一确定模块和替换模块。本发明实施例的替换缓存对象的方法和装置,基于每个缓存对象的权重值,通过替换权重值最小的缓存对象,能够去除最不可能被访问的缓存对象,提高缓存器的命中率,从而能够提高系统的性能。
Description
技术领域
本发明涉及信息技术领域,尤其涉及信息技术领域中替换缓存对象的方法和装置。
背景技术
如今已进入了Web2.0高速发展的互联网时代,各种互联网的Web应用程序如雨后春笋般出现。很多Web应用程序都选择成本更低的数据库用于系统记录,以节省数据库授权费用,同时还可以提升Web应用程序的性能。在Web应用程序中使用缓存技术是解决此问题的一种很好的方法,该方法可以在不必大幅度提升磁盘开销的情况下,让数据尽可能的靠近应用,从而可以提高Web应用程序的性能。
缓存技术中的一个关键问题是替换缓存对象的方法。由于缓存器的存储容量有限,当存储区被占满后,新的缓存对象就无法存储,这时需要将一部分当前存储价值低的缓存对象替换出去。因此,替换缓存对象的方法的好坏也决定了缓存器的命中率等指标。
目前,缓存的实现大多数都是基于传统的替换方法,其中使用比较广泛的是最近最少使用(LeastRecentlyUsed,简称为“LRU”)方法,以及最不经常使用(LeastFrequentlyUsed,简称为“LFU”)方法。该LRU方法是将一段时间内最久没有被访问的对象给替换出缓存器,其基本思想是利用局部性原理,即最近被访问的对象,很可能在后面也被访问,反过来说,已经很久没有被访问的对象,很可能在未来较长的一段时间内也不会被访问。该LRU方法依据最近一次的访问时间,能够较好地适应数据访问的变化,但是该方法没有考虑数据长期历史的访问特性,也没有考虑对象之间的相互关系,缓存器的命中率较低。
该LFU方法将访问次数最少的对象替换出缓存器,即将过去使用频率高的数据优先保存在缓存器中,其基本思想是最近被访问次数最多的对象就越可能再次被访问。该LFU方法使用数据的访问频率,有利于数据的总体优化使用,但该方法可能使得开始被频繁访问的对象长期驻留在缓存器中,影响缓存器的命中率。
因此,需要一种技术方案能够替换缓存对象,并提高缓存器的命中率。
发明内容
本发明实施例提供了一种替换缓存对象的方法和装置,能够在缓存器中保存的缓存对象的数量或占用的内存达到最大值时替换缓存对象,并提高缓存器的命中率。
一方面,本发明实施例提供了一种替换缓存对象的方法,该方法包括:接收需要存入缓存器的第一缓存对象;在该缓存器中保存的至少一个缓存对象的数量或占用的内存达到最大值时,获取该至少一个缓存对象中每个缓存对象的权重值;根据该每个缓存对象的权重值,确定该至少一个缓存对象中权重值最小的第二缓存对象;将该缓存器中保存的该第二缓存对象替换为该第一缓存对象。
另一方面,本发明实施例提供了一种替换缓存对象的装置,该装置包括:接收模块,用于接收需要存入缓存器的第一缓存对象;获取模块,用于在该缓存器中保存的至少一个缓存对象的数量或占用的内存达到最大值时,获取该至少一个缓存对象中每个缓存对象的权重值;第一确定模块,用于根据该获取模块获取的该每个缓存对象的权重值,确定该至少一个缓存对象中权重值最小的第二缓存对象;替换模块,用于将该缓存器中保存的该第一确定模块确定的该第二缓存对象替换为该接收模块接收的该第一缓存对象。
基于上述技术方案,本发明实施例的替换缓存对象的方法和装置,基于每个缓存对象的权重值,通过替换权重值最小的缓存对象,能够在缓存器中保存的缓存对象的数量或占用的内存达到最大值时,去除最不可能被访问的缓存对象,提高缓存器的命中率,从而能够提高系统的性能。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例的替换缓存对象的方法的示意性流程图。
图2是根据本发明实施例的替换缓存对象的方法的另一示意性流程图。
图3是根据本发明实施例的缓存对象之间的层级结构示意图。
图4是根据本发明实施例的确定缓存对象的权重值的方法的示意性流程图。
图5是根据本发明实施例的确定缓存对象的访问次数的方法的示意性流程图。
图6是根据本发明实施例的替换缓存对象的装置的示意性框图。
图7是根据本发明实施例的替换缓存对象的装置的另一示意性框图。
图8是根据本发明实施例的第二确定模块的示意性框图。
图9是根据本发明实施例的第二确定单元的示意性框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。
图1示出了根据本发明实施例的替换缓存对象的方法100的示意性流程图。如图1所示,该方法100包括:
S110,接收需要存入缓存器的第一缓存对象;
S120,在该缓存器中保存的至少一个缓存对象的数量或占用的内存达到最大值时,获取该至少一个缓存对象中每个缓存对象的权重值;
S130,根据该每个缓存对象的权重值,确定该至少一个缓存对象中权重值最小的第二缓存对象;
S140,将该缓存器中保存的该第二缓存对象替换为该第一缓存对象。
在例如为WEB应用程序的应用系统中,当接收的第一缓存对象需要存储到缓存器中时,如果缓存器中保存的至少一个缓存对象的数量或占用的内存达到最大值,那么应用系统可以获取该至少一个缓存对象中每个缓存对象的权重值,并可以根据该每个缓存对象的权重值,确定该至少一个缓存对象中权重值最小的第二缓存对象,从而该应用系统可以将该缓存器中保存的该第二缓存对象替换为该第一缓存对象。由此使得缓存器能够将存储价值相对较低的缓存对象替换出去,并存储新接收的缓存对象。
因此,本发明实施例的替换缓存对象的方法,基于每个缓存对象的权重值,通过替换权重值最小的缓存对象,能够在缓存器中保存的缓存对象的数量或占用的内存达到最大值时,去除最不可能被访问的缓存对象,提高缓存器的命中率,从而能够提高系统的性能。
应理解,在缓存器中保存的至少一个缓存对象的数量没有达到最大值,并且该至少一个缓存对象占用的内存没有达到最大值时,如果有新的缓存对象需要存入缓存器,那么可以将该新的缓存对象直接存储到缓存器;当然,在缓存器中保存的至少一个缓存对象的数量或占用的内存没有达到最大值时,也可以根据本发明实施例确定存储器中权重值最小的缓存对象,并将该权重值最小的缓存对象替换出去,以及存储该新的缓存对象。
在本发明实施例中,如图2所示,该方法100还可以包括:
S150,根据该至少一个缓存对象中各缓存对象的层级关系和/或操作类型,确定该至少一个缓存对象中每个缓存对象的权重值。
可选地,该确定该至少一个缓存对象中每个缓存对象的权重值,包括:周期性确定该每个缓存对象的权重值,和/或在该至少一个缓存对象的数量或占用的内存达到最大值时,确定该每个缓存对象的权重值;该获取该至少一个缓存对象中每个缓存对象的权重值,包括:获取周期性确定的该每个缓存对象的权重值,或获取在该至少一个缓存对象的数量或占用的内存达到最大值时确定的该每个缓存对象的权重值。
应理解,在本发明实施例中,应用系统也可以在有缓存对象需要存入缓存器时,确定缓存器中的每个缓存对象的权重值,从而可以确定权重值最小的缓存对象并进行替换处理。还应理解,还可以根据缓存对象的其他属性确定各缓存对象的权重值,以替换出存储价值较小的缓存对象。
在本发明实施例中,应用系统中的被缓存的对象通常不是孤立存在的,这些对象之间可以构建成层级结构,例如,各对象可以构成树型层级结构,或各对象可以构成一对多的层级结构,并且通常而言,访问下层对象的同时也可能会访问上层对象。例如,各缓存对象U1、T1、T2、M1、R1、R2、R3、D1、D2、D3和D4可以具有如图3所示的层级结构,U1可以表示用户,T1、T2可以表示表信息,R1、R2、R3可以表示该表的行信息,D1、D2、D3可以表示行中的数据信息。当D1被访问时,U1、T1和R1也很有可能被访问。因此,本发明实施例在确定缓存对象的权重值时,考虑缓存器中各缓存对象之间的层级关系,能够提高上层的缓存对象的命中率,从而能够进一步提升应用系统的性能。
另外,在本发明实施例中,一般地,对缓存对象的操作类型不同,该缓存对象将来被访问的概率或可能性不同。例如,对缓存对象进行更新操作后,很可能对该缓存对象进行查询操作。因此,本发明实施例在确定缓存对象的权重值时,考虑缓存器中各缓存对象的操作类型,能够预测将来的访问情况,从而能够提高缓存对象的命中率,并能够进一步提升应用系统的性能。
因此,本发明实施例的替换缓存对象的方法,通过根据各缓存对象的层级关系和/或操作类型,确定每个缓存对象的权重值,并替换权重值最小的缓存对象,能够在缓存器中保存的缓存对象的数量或占用的内存达到最大值时,去除最不可能被访问的缓存对象,并能够进一步提高缓存器对缓存对象的命中率,从而能够进一步提高系统的性能。
在本发明实施例中,应用系统可以根据各缓存对象的层级关系确定各缓存对象的权重值,例如,当下层的缓存对象被访问时,可以增加上层的缓存对象的权重;应用系统也可以根据各缓存对象的操作类型确定各缓存对象的权重值,例如,对缓存对象的不同类型的操作,可以对缓存对象设置不同的权重值。
优选地,应用系统可以根据各缓存对象的层级关系和操作类型,确定各缓存对象的权重值。下面将结合图4详细描述确定该至少一个缓存对象中每个缓存对象的权重值的方法150。
如图4所示,该方法150包括:
S151,获取该至少一个缓存对象中每个缓存对象的初始权重值;
S152,根据该每个缓存对象的层级关系和操作类型,确定一段时间内该每个缓存对象的访问次数;
S153,根据该每个缓存对象的初始权重值和该每个缓存对象的访问次数,确定该每个缓存对象的权重值。
在S151中,应用系统获取该至少一个缓存对象中每个缓存对象的初始权重值。该初始权重值可以设置为常数,例如,将各缓存对象的初始权重值设置为0;也可以将各缓存对象的历史权重值设置为当前一段时间内的初始权重值。例如,当应用系统周期性地确定各缓存对象的权重值时,可以将第N(N为自然数)个周期确定的各缓存对象的权重值,设置为第N+1个周期中相应的缓存对象的权重值。因此,该权重值还考虑了缓存对象的历史访问特性,能够更加全面地确定各缓存对象的存储价值,从而能够进一步提高缓存对象的命中率,并提升应用系统的性能。
在S152中,应用系统根据该每个缓存对象的层级关系和操作类型,确定一段时间内该每个缓存对象的访问次数。
例如,当下层的缓存对象被访问时,应用系统可以增加上层的缓存对象的访问次数;应用系统也可以对缓存对象的不同类型的操作,对缓存对象设置不同的访问次数。
具体而言,如图5所示,确定缓存对象的访问次数的方法152可以包括:
S1521,获取该每个缓存对象的键KEY或值VALUE中包括的层级关系;
S1522,根据一段时间内该每个缓存对象的该层级关系和操作类型,将与该每个缓存对象的操作类型相应的访问次数,以及与该每个缓存对象的保存在该缓冲器中的下层缓存对象的操作类型相应的访问次数之和,确定为一段时间内该每个缓存对象的访问次数,其中与不同操作类型相应的访问次数不同。
在S1521中,应用系统可以根据缓存对象的键KEY或值VALUE,获取缓存对象的层级关系。例如,在缓存对象D1的键KEY或值VALUE中,以“U1.T1.R1.D1”表示该缓存对象D1的上层缓存对象为R1,该R1的上层缓存对象为T1,该T1的上层缓存对象为U1。
在S1522中,应用系统根据一段时间内该每个缓存对象的该层级关系和操作类型,将与该每个缓存对象的操作类型相应的访问次数,以及与该每个缓存对象的保存在该缓冲器中的下层缓存对象的操作类型相应的访问次数之和,确定为一段时间内该每个缓存对象的访问次数,其中与不同操作类型相应的访问次数不同。
可选地,与不同操作类型相应的访问次数不同,包括:与该每个缓存对象或该下层缓存对象的添加(PUT)操作或更新(UPDATE)操作相应的访问次数,大于与该每个缓存对象或该下层缓存对象的获取(GET)操作或删除(DELETE)操作相应的访问次数;与该每个缓存对象或该下层缓存对象的获取操作相应的访问次数,大于与该每个缓存对象或该下层缓存对象的删除操作相应的访问次数。
例如,假设缓存对象D1、R1、T1、U1具有如图3所示的层级结构,当对缓存对象D1进行GET操作或PUT操作时,各缓存对象D1、R1、T1、U1的访问次数变化情况如表1所示。
表1
在S153中,应用系统根据该每个缓存对象的初始权重值和该每个缓存对象的访问次数,确定该每个缓存对象的权重值。可选地,每个缓存对象的权重值由下列等式(1)确定:
Ci(T1)=Wi(T1)+Ci(T0)/F(1)
其中,Ci(T1)为该至少一个缓存对象中的第i个缓存对象在T1时间段内的权重值,i为自然数且i≥1;Wi(T1)为该第i个缓存对象在T1时间段内的访问次数;Ci(T0)为该第i个缓存对象的初始权重值;F为平衡常量。
应理解,该平衡常数F用于根据具有的应用场景,动态调整缓存对象的历史访问特征和一段时间内缓存对象的访问次数的比重,以适应不同的应用场景。例如,当应用场景更适合于以历史访问特征评价缓存对象的存储价值时,可以将F设置较大的值;当应用场景更适合于以一段时间内的访问次数评价缓存对象的存储价值时,可以将F设置相对较小的值。
应理解,在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
因此,本发明实施例的替换缓存对象的方法,基于每个缓存对象的考虑层级关系、操作类型、历史访问特征的权重值,通过替换权重值最小的缓存对象,能够在缓存器中保存的缓存对象的数量或占用的内存达到最大值时,去除最不可能被访问的缓存对象,即存储价值最小的缓存对象,由此能够提高缓存器的命中率,从而能够提高系统的性能。
下面将结合图3所示的缓存对象层次构架图,以上述等式(1)所示的确定权重值的方法为例,对本发明实施例进行具体描述。
假设缓存器只能缓存8个对象,应用系统周期性地确定每个缓存对象的权重值,例如每10分钟为一个周期,初始的权重值为上一周期确定的权重值,其中第一周期的初始权重值为0,F设置为2,20分钟内对象的访问次序依次为:GETU1、GETU1.T1、GETU1.T2、UPDATEU1.T1.R1、PUTU1.T1.R1.D1、GETU1.T1.R2.D2、GETU1.T2.R3、UPDATEU1.T2、GETU1.T1.R2和GETU1.T2.R3.D3,并且对缓存对象进行添加PUT操作或更新UPDATE操作时,相应的访问次数增加值为2;对缓存对象进行获取GET操作时,相应的访问次数增加值为1;对缓存对象进行删除DELETE操作时,相应的访问次数增加值为0。
在第一个10分钟内,缓存器中各缓存对象的访问次数如表2所示。
表2
10分钟后,应用系统周期性地确定所述每个缓存对象的权重值,此时,缓存器中各缓存对象的权重值如表3所示。
表3
缓存对象 | 权重值 |
U1 | C(T10)=8 |
U1.T1 | C(T10)=6 |
U1.T2 | C(T10)=1 |
U1.T1.R1.D1 | C(T10)=2 |
U1.T1.R1 | C(T10)=4 |
U1.T1.R2.D2 | C(T10)=1 |
在第二个10分钟内,缓存器中各缓存对象的访问次数重新计算,并且如表4所示。
表4
访问次序 | 缓存对象的操作 | 访问次数 |
7 | GET U1.T2.R3 | W(U1)=1,W(U1.T2)=1,W(U1.T2.R3)=1 |
8 | UPDATE U1.T2 | W(U1)=3,W(U1.T2)=3 |
9 | GET U1.T1.R2 | W(U1)=4,W(U1.T1)=1,W(U1.T1.R2)=1 |
10 | GET U1.T2.R3.D3 |
当应用系统接收需要存入缓存器的缓存对象D3时,缓存器中保存的缓存对象的数量达到最大值,此时,应用系统确定的每个缓存对象的权重值如表5所示。
表5
缓存对象 | 权重值 |
U1 | C(Tm)=4+8/2=8 |
U1.T1 | C(Tm)=1+6/2=4 |
U1.T2 | C(Tm)=3+1/2=3.5 |
U1.T1.R1.D1 | C(Tm)=0+2/2=1 |
U1.T1.R1 | C(Tm)=0+4/2=2 |
U1.T1.R2.D2 | C(Tm)=0+1/2=0.5 |
U1.T2.R3 | C(Tm)=1+0/2=1 |
U1.T1.R2 | C(Tm)=1+1/2=1.5 |
由表5可以确定缓存器中权重值最小的缓存对象为D2,于是应用系统可以将该缓存器中保存的缓存对象D2替换为缓存对象D3。随后,在下一个周期中,缓存器中各缓存对象的权重值和访问次数如表6所示。
表6
缓存对象 | 权重值 | 访问次数 |
U1 | C(Tm)=8 | W(U1)=1 |
U1.T1 | C(Tm)=4 | W(U1.T1)=0 |
U1.T2 | C(Tm)=3.5 | W(U1.T2)=1 |
U1.T1.R1.D1 | C(Tm)=1 | W(U1.T1.R1.D1)=0 |
U1.T1.R1 | C(Tm)=2 | W(U1.T1.R1)=0 |
U1.T2.R3 | C(Tm)=1 | W(U1.T2.R3)=1 |
U1.T1.R2 | C(Tm)=1.5 | W(U1.T1.R2)=0 |
U1.T2.R3.D3 | C(Tm)=0 | W(U1.T2.R3.D3)=1 |
因此,本发明实施例的替换缓存对象的方法,基于每个缓存对象的考虑层级关系、操作类型、历史访问特征的权重值,通过替换权重值最小的缓存对象,能够在缓存器中保存的缓存对象的数量或占用的内存达到最大值时,去除最不可能被访问的缓存对象,即存储价值最小的缓存对象,由此能够提高缓存器的命中率,从而能够提高系统的性能。
上文中结合图1至图5,详细描述了根据本发明实施例的替换缓存对象的方法,下面将结合图6至图9,详细描述根据本发明实施例的替换缓存对象的装置。
图6示出了根据本发明实施例的替换缓存对象的装置600的示意性框图。如图6所示,该装置600包括:
接收模块610,用于接收需要存入缓存器的第一缓存对象;
获取模块620,用于在该缓存器中保存的至少一个缓存对象的数量或占用的内存达到最大值时,获取该至少一个缓存对象中每个缓存对象的权重值;
第一确定模块630,用于根据该获取模块620获取的该每个缓存对象的权重值,确定该至少一个缓存对象中权重值最小的第二缓存对象;
替换模块640,用于将该缓存器中保存的该第一确定模块630确定的该第二缓存对象替换为该接收模块610接收的该第一缓存对象。
本发明实施例的替换缓存对象的装置,基于每个缓存对象的权重值,通过替换权重值最小的缓存对象,能够在缓存器中保存的缓存对象的数量或占用的内存达到最大值时,去除最不可能被访问的缓存对象,提高缓存器的命中率,从而能够提高系统的性能。
在本发明实施例中,可选地,如图7所示,该装置600还包括:
第二确定模块650,用于根据该至少一个缓存对象中各缓存对象的层级关系和/或操作类型,确定该至少一个缓存对象中每个缓存对象的权重值。
可选地,如图8所示,该第二确定模块650包括:
获取单元651,用于获取该至少一个缓存对象中每个缓存对象的初始权重值;
第一确定单元652,用于根据该每个缓存对象的层级关系和操作类型,确定一段时间内该每个缓存对象的访问次数;
第二确定单元653,用于根据该获取单元651获取的该每个缓存对象的初始权重值,和该第一确定单元652确定的该每个缓存对象的访问次数,确定该每个缓存对象的权重值。
可选地,如图9所示,该第一确定单元652包括:
获取子单元6521,用于获取该每个缓存对象的键KEY或值VALUE中包括的层级关系;
确定子单元6522,用于根据一段时间内该每个缓存对象的层级关系和操作类型,将与该每个缓存对象的操作类型相应的访问次数,以及与该每个缓存对象的保存在该缓冲器中的下层缓存对象的操作类型相应的访问次数之和,确定为一段时间内该每个缓存对象的访问次数,其中与不同操作类型相应的访问次数不同。
在本发明实施例中,可选地,与该每个缓存对象或该下层缓存对象的添加操作或更新操作相应的访问次数,大于与该每个缓存对象或该下层缓存对象的获取操作或删除操作相应的访问次数;与该每个缓存对象或该下层缓存对象的获取操作相应的访问次数,大于与该每个缓存对象或该下层缓存对象的删除操作相应的访问次数。
在本发明实施例中,可选地,该第二确定单元653用于根据下列等式确定该每个缓存对象的权重值:
Ci(T1)=Wi(T1)+Ci(T0)/F,
其中,Ci(T1)为该至少一个缓存对象中的第i个缓存对象在T1时间段内的权重值,i为自然数且i≥1;Wi(T1)为该第i个缓存对象在T1时间段内的访问次数;Ci(T0)为该第i个缓存对象的初始权重值;F为平衡常量。
在本发明实施例中,可选地,该第二确定模块650用于周期性确定该每个缓存对象的权重值,和/或在该至少一个缓存对象的数量或占用的内存达到最大值时,确定该每个缓存对象的权重值;该获取模块620用于获取该第二确定模块650周期性确定的该每个缓存对象的权重值,或用于获取该第二确定模块650在该至少一个缓存对象的数量或占用的内存达到最大值时确定的该每个缓存对象的权重值。
应理解,根据本发明实施例的替换缓存对象的装置600可对应于本发明实施例中的应用系统,并且装置600中的各个模块的上述和其它操作和/或功能分别为了实现图1至图5中的各个方法的相应流程,为了简洁,在此不再赘述。
因此,本发明实施例的替换缓存对象的装置,基于每个缓存对象的考虑层级关系、操作类型、历史访问特征的权重值,通过替换权重值最小的缓存对象,能够在缓存器中保存的缓存对象的数量或占用的内存达到最大值时,去除最不可能被访问的缓存对象,即存储价值最小的缓存对象,由此能够提高缓存器的命中率,从而能够提高系统的性能。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (11)
1.一种替换缓存对象的方法,其特征在于,包括:
接收需要存入缓存器的第一缓存对象;
在所述缓存器中保存的至少一个缓存对象的数量或占用的内存达到最大值时,获取所述至少一个缓存对象中每个缓存对象的权重值;
根据所述每个缓存对象的权重值,确定所述至少一个缓存对象中权重值最小的第二缓存对象;
将所述缓存器中保存的所述第二缓存对象替换为所述第一缓存对象;
所述方法还包括:
根据所述至少一个缓存对象中各缓存对象的层级关系和/或操作类型,确定所述至少一个缓存对象中每个缓存对象的权重值。
2.根据权利要求1所述的方法,其特征在于,所述确定所述至少一个缓存对象中每个缓存对象的权重值,包括:
获取所述至少一个缓存对象中每个缓存对象的初始权重值;
根据所述每个缓存对象的层级关系和操作类型,确定一段时间内所述每个缓存对象的访问次数;
根据所述每个缓存对象的初始权重值和所述每个缓存对象的访问次数,确定所述每个缓存对象的权重值。
3.根据权利要求2所述的方法,其特征在于,所述确定一段时间内所述每个缓存对象的访问次数,包括:
获取所述每个缓存对象的键KEY或值VALUE中包括的层级关系;
根据一段时间内所述每个缓存对象的所述层级关系和操作类型,将与所述每个缓存对象的操作类型相应的访问次数,以及与所述每个缓存对象的保存在所述缓存器中的下层缓存对象的操作类型相应的访问次数之和,确定为一段时间内所述每个缓存对象的访问次数,其中与不同操作类型相应的访问次数不同。
4.根据权利要求3所述的方法,其特征在于,所述与不同操作类型相应的访问次数不同,包括:
与所述每个缓存对象或所述下层缓存对象的添加操作或更新操作相应的访问次数,大于与所述每个缓存对象或所述下层缓存对象的获取操作或删除操作相应的访问次数;与所述每个缓存对象或所述下层缓存对象的获取操作相应的访问次数,大于与所述每个缓存对象或所述下层缓存对象的删除操作相应的访问次数。
5.根据权利要求2所述的方法,其特征在于,所述每个缓存对象的权重值由下列等式确定:
Ci(T1)=Wi(T1)+Ci(T0)/F,
其中,Ci(T1)为所述至少一个缓存对象中的第i个缓存对象在T1时间段内的权重值,i为自然数且i≥1;Wi(T1)为所述第i个缓存对象在T1时间段内的访问次数;Ci(T0)为所述第i个缓存对象的初始权重值;F为平衡常量。
6.根据权利要求1至5中任一项所述的方法,其特征在于,所述确定所述至少一个缓存对象中每个缓存对象的权重值,包括:
周期性确定所述每个缓存对象的权重值,和/或在所述至少一个缓存对象的数量或占用的内存达到最大值时,确定所述每个缓存对象的权重值;
所述获取所述至少一个缓存对象中每个缓存对象的权重值,包括:
获取周期性确定的所述每个缓存对象的权重值,或获取在所述至少一个缓存对象的数量或占用的内存达到最大值时确定的所述每个缓存对象的权重值。
7.一种替换缓存对象的装置,其特征在于,包括:
接收模块,用于接收需要存入缓存器的第一缓存对象;
获取模块,用于在所述缓存器中保存的至少一个缓存对象的数量或占用的内存达到最大值时,获取所述至少一个缓存对象中每个缓存对象的权重值;
第一确定模块,用于根据所述获取模块获取的所述每个缓存对象的权重值,确定所述至少一个缓存对象中权重值最小的第二缓存对象;
替换模块,用于将所述缓存器中保存的所述第一确定模块确定的所述第二缓存对象替换为所述接收模块接收的所述第一缓存对象;
所述装置还包括:
第二确定模块,用于根据所述至少一个缓存对象中各缓存对象的层级关系和/或操作类型,确定所述至少一个缓存对象中每个缓存对象的权重值。
8.根据权利要求7所述的装置,其特征在于,所述第二确定模块包括:
获取单元,用于获取所述至少一个缓存对象中每个缓存对象的初始权重值;
第一确定单元,用于根据所述每个缓存对象的层级关系和操作类型,确定一段时间内所述每个缓存对象的访问次数;
第二确定单元,用于根据所述获取单元获取的所述每个缓存对象的初始权重值,和所述第一确定单元确定的所述每个缓存对象的访问次数,确定所述每个缓存对象的权重值。
9.根据权利要求8所述的装置,其特征在于,所述第一确定单元包括:
获取子单元,用于获取所述每个缓存对象的键KEY或值VALUE中包括的层级关系;
确定子单元,用于根据一段时间内所述每个缓存对象的所述层级关系和操作类型,将与所述每个缓存对象的操作类型相应的访问次数,以及与所述每个缓存对象的保存在所述缓存器中的下层缓存对象的操作类型相应的访问次数之和,确定为一段时间内所述每个缓存对象的访问次数,其中与不同操作类型相应的访问次数不同。
10.根据权利要求8所述的装置,其特征在于,所述第二确定单元用于根据下列等式确定所述每个缓存对象的权重值:
Ci(T1)=Wi(T1)+Ci(T0)/F,
其中,Ci(T1)为所述至少一个缓存对象中的第i个缓存对象在T1时间段内的权重值,i为自然数且i≥1;Wi(T1)为所述第i个缓存对象在T1时间段内的访问次数;Ci(T0)为所述第i个缓存对象的初始权重值;F为平衡常量。
11.根据权利要求7至10中任一项所述的装置,其特征在于,所述第二确定模块用于周期性确定所述每个缓存对象的权重值,和/或在所述至少一个缓存对象的数量或占用的内存达到最大值时,确定所述每个缓存对象的权重值;所述获取模块用于获取所述第二确定模块周期性确定的所述每个缓存对象的权重值,或用于获取所述第二确定模块在所述至少一个缓存对象的数量或占用的内存达到最大值时确定的所述每个缓存对象的权重值。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2011/083896 WO2013086689A1 (zh) | 2011-12-13 | 2011-12-13 | 替换缓存对象的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103548005A CN103548005A (zh) | 2014-01-29 |
CN103548005B true CN103548005B (zh) | 2016-03-30 |
Family
ID=48611801
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180003186.0A Active CN103548005B (zh) | 2011-12-13 | 2011-12-13 | 替换缓存对象的方法和装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN103548005B (zh) |
WO (1) | WO2013086689A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105094686B (zh) * | 2014-05-09 | 2018-04-10 | 华为技术有限公司 | 数据缓存方法、缓存和计算机系统 |
CN104333594B (zh) * | 2014-11-05 | 2018-07-27 | 无锡成电科大科技发展有限公司 | 基于光传输网络的云平台资源采集加速方法和系统 |
CN107220188B (zh) * | 2017-05-31 | 2020-10-27 | 中山大学 | 一种自适应缓冲块替换方法 |
CN109101580A (zh) * | 2018-07-20 | 2018-12-28 | 北京北信源信息安全技术有限公司 | 一种基于Redis的热点数据缓存方法和装置 |
US11687244B2 (en) * | 2019-10-24 | 2023-06-27 | Micron Technology, Inc. | Quality of service for memory devices using weighted memory access operation types |
CN111552652B (zh) * | 2020-07-13 | 2020-11-17 | 深圳鲲云信息科技有限公司 | 基于人工智能芯片的数据处理方法、装置和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1622059A (zh) * | 2003-11-24 | 2005-06-01 | 顺德市顺达电脑厂有限公司 | 高速缓存代换算法 |
CN1851677A (zh) * | 2005-11-25 | 2006-10-25 | 华为技术有限公司 | 嵌入式处理器系统及其数据操作方法 |
CN101232464A (zh) * | 2008-02-28 | 2008-07-30 | 清华大学 | 基于时间权参数的p2p实时流媒体缓存替换方法 |
CN101551781A (zh) * | 2009-05-22 | 2009-10-07 | 中国科学院计算技术研究所 | 一种p2p视频点播系统中的磁盘缓存替换方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6266742B1 (en) * | 1997-10-27 | 2001-07-24 | International Business Machines Corporation | Algorithm for cache replacement |
US20030110357A1 (en) * | 2001-11-14 | 2003-06-12 | Nguyen Phillip V. | Weight based disk cache replacement method |
US20060282620A1 (en) * | 2005-06-14 | 2006-12-14 | Sujatha Kashyap | Weighted LRU for associative caches |
WO2007068122A1 (en) * | 2005-12-16 | 2007-06-21 | Univ Western Ontario | System and method for cache management |
CN100596190C (zh) * | 2007-12-12 | 2010-03-24 | 中山大学 | 一种数字家庭中vod客户端代理缓存服务器 |
-
2011
- 2011-12-13 CN CN201180003186.0A patent/CN103548005B/zh active Active
- 2011-12-13 WO PCT/CN2011/083896 patent/WO2013086689A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1622059A (zh) * | 2003-11-24 | 2005-06-01 | 顺德市顺达电脑厂有限公司 | 高速缓存代换算法 |
CN1851677A (zh) * | 2005-11-25 | 2006-10-25 | 华为技术有限公司 | 嵌入式处理器系统及其数据操作方法 |
CN101232464A (zh) * | 2008-02-28 | 2008-07-30 | 清华大学 | 基于时间权参数的p2p实时流媒体缓存替换方法 |
CN101551781A (zh) * | 2009-05-22 | 2009-10-07 | 中国科学院计算技术研究所 | 一种p2p视频点播系统中的磁盘缓存替换方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2013086689A1 (zh) | 2013-06-20 |
CN103548005A (zh) | 2014-01-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103548005B (zh) | 替换缓存对象的方法和装置 | |
CN103336849B (zh) | 一种数据库检索系统中提高检索速度的方法及装置 | |
CN102782683B (zh) | 用于数据库服务器的缓冲池扩展 | |
CN103034566B (zh) | 虚拟机还原的方法和装置 | |
CN105637470B (zh) | 用于脏数据管理的方法和计算设备 | |
CN103440207A (zh) | 缓存方法及装置 | |
CN104301360A (zh) | 一种日志数据记录的方法、日志服务器及系统 | |
CN103597444A (zh) | 按照使用来管理基于闪存的存储上的数据放置 | |
CN104156380A (zh) | 一种分布式存储器哈希索引方法及系统 | |
CN104715020A (zh) | 缓存数据的删除方法及服务器 | |
JP2010541107A (ja) | ソリッドステートドライブオプティマイザ | |
CN103995855A (zh) | 存储数据的方法和装置 | |
CN107273046B (zh) | 一种基于固态盘阵列的数据处理方法及系统 | |
CN105224240A (zh) | 将数据写入存储设备的方法、装置及存储设备 | |
CN103019887A (zh) | 数据备份方法及装置 | |
CN101960442B (zh) | 使用虚拟技术输入/输出数据的方法和设备 | |
CN104699424A (zh) | 一种基于页面热度的异构内存管理方法 | |
CN104050057B (zh) | 一种历史感知的数据去重碎片消除方法与系统 | |
CN103548004B (zh) | 在文件系统中实现多级存储的方法和装置 | |
US20170075934A1 (en) | Method and system for handling binary large objects | |
CN104731515A (zh) | 控制存储设备机群磨损均衡的方法及设备 | |
CN116737064A (zh) | 一种固态硬盘的数据管理方法和系统 | |
CN102111920A (zh) | 一种性能报表管理的方法及装置 | |
CN110674397B (zh) | 年龄点预测模型的训练方法及装置、设备与可读介质 | |
CN107092525A (zh) | 数据缓存方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220216 Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province Patentee after: Huawei Cloud Computing Technology Co.,Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd. |