缓存控制装置和缓存控制方法转让专利

申请号 : CN201110447952.4

文献号 : CN102541759B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 黄海峰

申请人 : 畅捷通信息技术股份有限公司

摘要 :

本发明提供一种缓存控制装置和一种缓存控制方法,其中,缓存控制装置包括:缓存管理模块,将缓存划分为多层结构,其中,对于相邻的两层结构,每个上层结构包括多个下层结构;事件监听模块,监听来自所述缓存的外部的缓存事件,所述缓存管理模块根据所述缓存事件的粒度,选取所述缓存事件对应的结构并进行相应操作。在该技术方案中,通过设置多层缓存结构,可以根据缓存事件粒度的不同,到特定结构层中选取事件对应的缓存结构来进行操作,可以提高操作效率。

权利要求 :

1.一种缓存控制装置,其特征在于,包括:

缓存管理模块,将缓存划分为多层结构,其中,对于相邻的两层结构,每个上层结构包括多个下层结构;

事件监听模块,监听来自所述缓存的外部的缓存事件,所述缓存管理模块根据所述缓存事件的粒度,选取所述缓存事件对应的结构并进行相应操作;

所述缓存管理模块将缓存划分为多个源,并将每个源划分为多个片,将每个片划分为多个记录,在所述缓存事件的粒度为源级时,选取所述缓存事件对应的源并进行相应操作,在所述缓存事件的粒度为片级时,选取所述缓存事件对应的片并进行相应操作,在所述缓存事件的粒度为记录级时,选取所述缓存事件对应的记录并进行相应操作。

2.根据权利要求1所述的缓存控制装置,其特征在于,所述缓存管理模块还设置获取不同结构的接口,并通过获取所述结构的接口,选取所述结构并进行相应操作。

3.根据权利要求1所述的缓存控制装置,其特征在于,所述缓存管理模块在选取不到所述缓存事件对应的结构时,将所述缓存事件发送到所述缓存的外部。

4.根据权利要求1所述的缓存控制装置,其特征在于,所述每个片支持的数据结构包括:键值结构、队列结构和/或列表结构。

5.一种缓存控制方法,其特征在于,包括:

步骤202,将缓存划分为多层结构,其中,对于相邻的两层结构,每个上层结构包括多个下层结构;

步骤204,监听来自所述缓存的外部的缓存事件;

步骤206,根据所述缓存事件的粒度,选取所述缓存事件对应的结构并进行相应操作;

所述步骤202具体包括:将缓存划分为多个源,并将每个源划分为多个片,将每个片划分为多个记录;

所述步骤206具体包括:在所述缓存事件的粒度为源级时,选取所述缓存事件对应的源并进行相应操作,在所述缓存事件的粒度为片级时,选取所述缓存事件对应的片并进行相应操作,在所述缓存事件的粒度为记录级时,选取所述缓存事件对应的记录并进行相应操作。

6.根据权利要求5述的缓存控制方法,其特征在于,在所述步骤206之前,还包括:设置获取不同结构的接口;

所述步骤206具体包括:通过获取所述结构的接口,选取所述结构并进行相应操作。

7.根据权利要求5所述的缓存控制方法,其特征在于,所述步骤206还包括:在选取不到所述缓存事件对应的结构时,将所述缓存事件发送到所述缓存的外部。

8.根据权利要求7所述的缓存控制方法,其特征在于,所述每个片支持的数据结构包括:键值结构、队列结构和/或列表结构。

说明书 :

缓存控制装置和缓存控制方法

技术领域

[0001] 本发明涉及计算机技术领域,具体而言,涉及一种缓存控制装置和一种缓存控制方法。

背景技术

[0002] 在企业应用中,从数据库或其它类别数据源进行数据读取时,因读取位置涉及磁盘或需要远程传输,往往消耗时间较长造成读写效率的瓶颈,这是因为一方面,由于现有缓存没有合适的架构,无法在内存中合理缓存数据库或其它类别数据源的数据,难以提升读取效率,另一方面,一般缓存的接口比较单一,难以支持实际应用中多类数据源的数据缓存。
[0003] 因此,需要一种新的管理缓存的技术方案,需要能够存储来自不同类型的数据源的数据,同时保证能够对缓存中进行高效率的读写操作。

发明内容

[0004] 本发明所要解决的技术问题在于,提供一种新的管理缓存的技术方案,需要能够存储来自不同类型的数据源的数据,同时保证能够对缓存中进行高效率的读写操作。
[0005] 有鉴于此,本发明提供一种缓存控制装置,包括:缓存管理模块,将缓存划分为多层结构,其中,对于相邻的两层结构,每个上层结构包括多个下层结构;事件监听模块,监听来自所述缓存的外部的缓存事件,所述缓存管理模块根据所述缓存事件的粒度,选取所述缓存事件对应的结构并进行相应操作。在该技术方案中,通过设置多层缓存结构,可以根据缓存事件粒度的不同,到特定结构层中选取事件对应的缓存结构来进行操作,可以提高操作效率。
[0006] 在上述技术方案中,优选地,所述缓存管理模块还设置获取不同结构的接口,并通过获取所述结构的接口,选取所述结构并进行相应操作。在该技术方案中,接口可以实现对不同结构的直接调用,能有效保证对缓存结构的操作效率。
[0007] 在上述技术方案中,优选地,所述缓存管理模块在选取不到所述缓存事件对应的结构时,将所述缓存事件发送到所述缓存的外部。
[0008] 在上述技术方案中,优选地,所述缓存管理模块将缓存划分为多个源,并将每个源划分为多个片,将每个片划分为多个记录,在所述缓存事件的粒度为源级时,选取所述缓存事件对应的源并进行相应操作,在所述缓存事件的粒度为片级时,选取所述缓存事件对应的片并进行相应操作,在所述缓存事件的粒度为记录级时,选取所述缓存事件对应的记录并进行相应操作。在该技术方案中,源对应数据源,片对应缓存实例,记录对应不同数据,可以保证对现有的不同粒度的数据的有效管理。
[0009] 在上述技术方案中,优选地,所述每个片支持的数据结构包括:键值结构、队列结构和/或列表结构。在该技术方案中,支持不同数据结构的应用需求。
[0010] 本发明还提供一种缓存控制方法,包括:步骤202,将缓存划分为多层结构,其中,对于相邻的两层结构,每个上层结构包括多个下层结构;步骤204,监听来自所述缓存的外部的缓存事件;步骤206,根据所述缓存事件的粒度,选取所述缓存事件对应的结构并进行相应操作。在该技术方案中,通过设置多层缓存结构,可以根据缓存事件粒度的不同,到特定结构层中选取事件对应的缓存结构来进行操作,可以提高操作效率。
[0011] 在上述技术方案中,优选地,在所述步骤206之前,还包括:设置获取不同结构的接口;所述步骤206具体包括:通过获取所述结构的接口,选取所述结构并进行相应操作。在该技术方案中,接口可以实现对不同结构的直接调用,能有效保证对缓存结构的操作效率。
[0012] 在上述技术方案中,优选地,所述步骤206还包括:在选取不到所述缓存事件对应的结构时,将所述缓存事件发送到所述缓存的外部。
[0013] 在上述技术方案中,优选地,所述步骤202具体包括:将缓存划分为多个源,并将每个源划分为多个片,将每个片划分为多个记录;所述步骤206具体包括:在所述缓存事件的粒度为源级时,选取所述缓存事件对应的源并进行相应操作,在所述缓存事件的粒度为片级时,选取所述缓存事件对应的片并进行相应操作,在所述缓存事件的粒度为记录级时,选取所述缓存事件对应的记录并进行相应操作。在该技术方案中,源对应数据源,片对应缓存实例,记录对应不同数据,可以保证对现有的不同粒度的数据的有效管理。
[0014] 在上述技术方案中,优选地,所述每个片支持的数据结构包括:键值结构、队列结构和/或列表结构。在该技术方案中,支持不同数据结构的应用需求。
[0015] 通过以上技术方案,可以实现一种缓存控制装置和一种缓存控制方法,需要能够存储来自不同类型的数据源的数据,同时保证能够对缓存中进行高效率的读写操作。

附图说明

[0016] 图1是根据本发明的一个实施例的缓存控制装置的框图;
[0017] 图2是根据本发明的一个实施例的缓存控制方法的流程图;
[0018] 图3是根据本发明的一个实施例的缓存控制方法的原理示意图。

具体实施方式

[0019] 为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。
[0020] 在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明并不限于下面公开的具体实施例的限制。
[0021] 图1是根据本发明的一个实施例的缓存控制装置的框图。
[0022] 如图1所示,本发明提供一种缓存控制装置100,包括:缓存管理模块102,将缓存划分为多层结构,其中,对于相邻的两层结构,每个上层结构包括多个下层结构;事件监听模块104,监听来自所述缓存的外部的缓存事件,所述缓存管理模块102根据所述缓存事件的粒度,选取所述缓存事件对应的结构并进行相应操作。在该技术方案中,通过设置多层缓存结构,可以根据缓存事件粒度的不同,到特定结构层中选取事件对应的缓存结构来进行操作,可以提高操作效率。
[0023] 在上述技术方案中,所述缓存管理模块102还设置获取不同结构的接口,并通过获取所述结构的接口,选取所述结构并进行相应操作。在该技术方案中,接口可以实现对不同结构的直接调用,能有效保证对缓存结构的操作效率。
[0024] 在上述技术方案中,所述缓存管理模块102在选取不到所述缓存事件对应的结构时,将所述缓存事件发送到所述缓存的外部。
[0025] 在上述技术方案中,所述缓存管理模块102将缓存划分为多个源,并将每个源划分为多个片,将每个片划分为多个记录,在所述缓存事件的粒度为源级时,选取所述缓存事件对应的源并进行相应操作,在所述缓存事件的粒度为片级时,选取所述缓存事件对应的片并进行相应操作,在所述缓存事件的粒度为记录级时,选取所述缓存事件对应的记录并进行相应操作。在该技术方案中,源对应数据源,片对应缓存实例,记录对应不同数据,可以保证对现有的不同粒度的数据的有效管理。
[0026] 在上述技术方案中,所述每个片支持的数据结构包括:键值结构、队列结构和/或列表结构。在该技术方案中,支持不同数据结构的应用需求。
[0027] 图2是根据本发明的一个实施例的缓存控制方法的流程图。
[0028] 如图2所示,本发明还提供一种缓存控制方法,包括:步骤202,将缓存划分为多层结构,其中,对于相邻的两层结构,每个上层结构包括多个下层结构;步骤204,监听来自所述缓存的外部的缓存事件;步骤206,根据所述缓存事件的粒度,选取所述缓存事件对应的结构并进行相应操作。在该技术方案中,通过设置多层缓存结构,可以根据缓存事件粒度的不同,到特定结构层中选取事件对应的缓存结构来进行操作,可以提高操作效率。
[0029] 在上述技术方案中,在所述步骤206之前,还包括:设置获取不同结构的接口;所述步骤206具体包括:通过获取所述结构的接口,选取所述结构并进行相应操作。在该技术方案中,接口可以实现对不同结构的直接调用,能有效保证对缓存结构的操作效率。
[0030] 在上述技术方案中,所述步骤206还包括:在选取不到所述缓存事件对应的结构时,将所述缓存事件发送到所述缓存的外部。
[0031] 在上述技术方案中,所述步骤202具体包括:将缓存划分为多个源,并将每个源划分为多个片,将每个片划分为多个记录;所述步骤206具体包括:在所述缓存事件的粒度为源级时,选取所述缓存事件对应的源并进行相应操作,在所述缓存事件的粒度为片级时,选取所述缓存事件对应的片并进行相应操作,在所述缓存事件的粒度为记录级时,选取所述缓存事件对应的记录并进行相应操作。在该技术方案中,源对应数据源,片对应缓存实例,记录对应不同数据,可以保证对现有的不同粒度的数据的有效管理。
[0032] 在上述技术方案中,所述每个片支持的数据结构包括:键值结构、队列结构和/或列表结构。在该技术方案中,支持不同数据结构的应用需求。
[0033] 通过本发明的一个实施例中的缓存控制方法,实现了如图3所示的缓存架构,具体包括:
[0034] 1、缓存管理器:
[0035] A、提供缓存源的获取接口;
[0036] B、实时监听来自外部的缓存触发事件(如来自其它系统缓存清除事件);
[0037] C、判断缓存触发事件的级别(源级、片级、记录级),如果判断缓存事件级别为源级,则直接清理对应的缓存源,如果判断缓存级别(片级、记录级),则将事件分发到下级缓存结构或是外部系统。
[0038] 2、源:
[0039] A、提供缓存中片的获取接口;
[0040] B、实时监听来自缓存管理器分发的缓存触发事件;
[0041] C、判断缓存触发事件的级别(片级、记录级),如果判断缓存事件级别为片级,则直接清理对应的缓存片,如果判断缓存级别为记录级,则将事件分发到下级缓存结构。
[0042] 3、片:
[0043] A、支持不同类型的缓存片实现,具体包括键值结构(哈希、最近最常使用LRU)、队列结构(Queue)、列表结构(List)、表格结构(Table)四种;
[0044] B、提供缓存记录的获取接口;
[0045] C、实时监听来自缓存管理器分发的缓存触发事件,进行记录级别缓存清理。
[0046] 4、记录:
[0047] A、是缓存数据的最小级别。
[0048] 5、缓存触发事件分发监听层:
[0049] 指缓存与其它系统或其它缓存的事件交互接口,主要功能完成缓存的同步触发操作。
[0050] 6、缓存接口层:
[0051] 指缓存的调用者进行数据缓存的应用开发接口,在源、片、记录等不同级别的缓存结构都有接口方法。
[0052] 在本发明的另一个实施例中,以数据库缓存应用为具体实例,描述缓存管理器、源、片、记录及它们之间的关系,接口层的调用方式,及缓存触发事件工作机制。
[0053] 具体定义如下
[0054] 缓存管理器CacheManager,源CacheSource,片ICache(其继承分类包括键值结构IKeyValueCache、列表结构IListCache、队列结构IQueue、表格结构ITable),记录Object,缓存类别CacheType(枚举类型),缓存策略CacheStragy,缓存触发监听接口ICacheNotifyListener。
[0055] 主要接口如下:
[0056] 1、缓存管理器接口
[0057] 获 取 源 接 口 为 CacheSource*source = CacheManager.GetSource(string sourceName),其中sourceName是调用者指定的唯一源名称,比如数据库的名字;
[0058] 如果是集群应用,需要为缓存管理器附加缓存触发分发监听接口,接口方式为CacheManager.EnableNotifyListener(bool bEnable);
[0059] 获取缓存的生效或失效状态为CacheManager.Enable(bool bEnable);
[0060] 获取缓存的生效或失效状态,但缓存在失效状态时,获取源为空指针,调用层需要做出逻辑判断,接口为CacheManager.IsEnable()。
[0061] 2、源接口
[0062] 这里以某个表格数据缓存为例,获取指定片的接口为ITable*tableCache=CacheSource.GetCache(string cacheName,CacheType.Table);
[0063] 源还有内部的分发和监听事件接口,但不提供用户接口层调用。
[0064] 3、片接口
[0065] 针对不同类别的缓存片有相应的接口,这些接口方法基本与常见数据结构的接口方法一致,这里举例ITable缓存的接口方法:
[0066] 缓存片清空数据接口为ITable.Clear();
[0067] 缓存记录数的接口为ITable.Count;
[0068] 增加缓存记录的接口为ITable.Add(Row*row);
[0069] 删除某条记录的接口为ITable.RemoveAt(int index);
[0070] 获取某条记录的接口为ITable.GetRowAt(int index);
[0071] 获取一批记录的接口为ITable.GetRows(int startIndex,int count)。
[0072] 本实施例的缓存控制方法实现了内部事件分发和监听机制,如果缓存管理器启用了缓存触发分发事件监听,缓存中的更新都会分发不同粒度事件到缓存管理器,缓存管理器将事件通过可靠的方式分发到集群中其它缓存的缓存触发分发事件监听接口(分发机制),缓存管理器监听到不同粒度级别触发事件,以及不同级别内部分发到源或片,由源或片进行不同级别缓存数据清理(触发机制)。以上分发事件和监听的对象都是简单消息,方法触发也是消耗为常量时间,因此效率非常高。
[0073] 综上所述,可以实现一种缓存控制装置和一种缓存控制方法,设计出了缓存的分层结构(源、片、记录),其缓存架构能提供更为灵活、高效的缓存调用及管理接口,保证不同粒度级别(源、片、记录)缓存的高效读写操作,并提供多个缓存节点在不同粒度级别(源、片、记录)之间的缓存事件监听接口。
[0074] 以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。