高性能数据缓存方法

文档序号:8339390阅读:222来源:国知局
高性能数据缓存方法
【技术领域】
[0001]本发明涉及web应用开发中的数据缓存技术,具体涉及高性能数据缓存方法。
【背景技术】
[0002]目前,有些交互式web应用平台要求功能丰富,还要具备可扩展性、可维护性和高性能的特点,在提供给最终用户一个牢固稳定体验的同时,还要兼顾运营的成本。因此,在设计系统架构的时候,对于缓存设计的目标就是低成本、高性能,在保证高效的缓存实现下,又不过度的设计,保持web应用平台的灵巧性。
[0003]在web应用开发过程中,经常会面对各种各样的数据结构,有的数据内容庞大,有的数据琐碎繁多。如果不同类型的数据结构都使用数据库做载体,虽然解决了服务器之间数据的同步,但是随着访问量的增加,频繁的读写数据库,势必会对服务器的性能造成影响。

【发明内容】

[0004]本发明提供高性能数据缓存方法,该方法结合web应用程序的特点,采用服务器本地缓存(LocalCache)与独立缓存服务器(MemCache)相结合的模式分类存储数据,极大地降低了数据源的压力,数据访问请求高并发的时候web页面的响应速度得到很大的提尚O
[0005]为解决上述技术问题,本发明方法采用如下技术方案:高性能数据缓存方法,包括以下步骤:
[0006]S1、当发起获取数据的请求时,根据传递的请求参数,获取缓存类型标记,根据不同缓存类型的缓存实例来处理获取数据的请求;
[0007]S2、通过调用缓存工厂类,实例化不同的缓存实体类来操作缓存数据;
[0008]S3、通过调用缓存处理逻辑函数获取缓存对象。
[0009]优选地,所述步骤S2为:通过定义一个缓存工厂类,根据传递的请求参数,从项目配置文件中读取不同的缓存配置参数,来实例化不同的缓存实体类,以便按类操作缓存数据。
[0010]优选地,所述缓存实体类包括本地缓存和分布式高速缓存。本地缓存为使用.net框架提供Cache缓存类。分布式高速缓存为独立的分布式内存对象缓存系统,通过在内存中维护哈希表,将磁盘文件调用到内存中,在内存中实现数据的存取,并通过socket通信来传递数据。
[0011]优选地,所述缓存实体类采用“项目简称+功能简称+同类型缓存序号+缓存时间”生成扩展名,作为缓存数据的缓存名称。
[0012]优选地,所述步骤S3为:缓存处理逻辑函数首先根据缓存名称去对应的缓存实体类中获取缓存数据,如果缓存实体类中存在缓存数据,就返回相应的数据对象,若不存在,则通过委托函数去数据源中获取缓存数据;在得到需要的数据对象之后,将数据对象按照缓存名称存储到相应的缓存实体类中,同时返回该数据对象。其中,所述数据源包括数据库及磁盘文件。
[0013]优选地,所述委托函数用于返回一个object对象,把需要缓存的数据对象的数据源提取操作定义成一个具体的委托函数,并以object类型为该函数的返回值,以参数的方式传递给缓存处理逻辑。
[0014]与现有技术相比,本发明具有如下优点及有益效果:
[0015]1、从数据缓存的流程上看,用户并不需要知道内部是采用什么样的缓存机制,只需要提供缓存名称、缓存类型标记和缓存时间,就能提取到想要的数据。而对于相同的数据请求(相同的请求会生成相同的缓存名称),都会先通过缓存处理逻辑函数去判断,优先获取缓存数据,缓存失效才从实际数据源获取数据并重新缓存,这样大大降低了直接读取数据源的次数,提高了服务器的I/o性能,数据访问请求高并发的时候web页面的响应速度得到很大的提尚。
[0016]2、采用缓存处理逻辑函数获取数据,若缓存中不存在所请求的数据,则通过委托函数去实际的数据源中获取数据,使得在开发不同数据缓存的时候,不需要去重复编写同样的数据源读取数据的操作,大大降低了开发成本,同时也利于程序轻松移植到不同的数据环境中,程序的可移植性大大提高。
【附图说明】
[0017]图1为本发明的数据缓存流程图。
【具体实施方式】
[0018]下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不局限于此。
[0019]实施例
[0020]如图1所示,本发明设计了一个基于数据对象的缓存机制,数据缓存方法包括如下步骤:
[0021]1、首先,当发起获取数据的请求时,根据传递的请求参数,获取缓存类型标记,根据不同缓存类型的缓存实例来处理获取数据的请求。
[0022]2、通过调用缓存工厂类,实例化不同的缓存实体类来操作缓存数据。通过定义一个缓存工厂类,根据传递的请求参数,从项目配置文件中读取不同的缓存配置参数,来实例化不同的缓存实体类,以便按类操作缓存数据。
[0023]缓存实体类在本实施例中定义了两种:一种是本地缓存,其使用.net框架提供Cache缓存类,用来存储一些变动频率比较低,而且数据容量相对比较大的数据对象。另一种是分布式高速缓存(也叫独立缓存),其特点是一个独立高性能的分布式内存对象缓存系统,通过在内存中维护的一个hash(哈希)表,将磁盘文件调用到内存中,在内存中实现数据的存取,并通过socket通信来传递数据。对这两种不同的缓存方式按照统一的接口封装,在具体使用时,根据传递给缓存工厂的缓存类型标记去实例化相应的缓存实例。
[0024]考虑到定义的两种缓存实体类都是通过hash表的方式去检索缓存的数据,而且缓存的数据支持多种数据格式。在处理缓存的逻辑上,本实施例采取统一的缓存命名规范,即统一采用“项目简称+功能简称+同类型缓存序号+缓存时间”生成扩展名,这样的缓存名称能够直观的体现出这个缓存数据的用途和缓存的时间,方便开发调试和缓存维护;日后如果需要对数据的缓存方式进行修改或者扩充,只需要调整输入的缓存类型标记就能更换缓存方式,利于缓存方式的修改或扩充。
[0025]3、其次,在缓存工厂类实例化相应的缓存实体类之后,通过调用缓存处理逻辑函数获取缓存对象。缓存处理逻辑函数有3个参数:字符串类型的缓存名称(用来在缓存队列中查询存储的缓存对象)、委托函数(delegate)类型的缓存对象(用来提取数据库中实际存储的数据)、bool类型的缓存刷新标记(该标记默认值是false ;当设为true时,绕过缓存机制,优先提取数据库数据,目的是为了在特殊需求时提取最新的数据使用的)。
[0026]缓存处理逻辑函数是首先根据缓存名称去对应的缓存实体类中获取缓存数据,如果缓存实体类中存在缓存数据,就返回相应的数据对象,若不存在,则通过委托函数(delegate)去数据源中获取缓存数据,这里数据源并不局限于数据库,也可以是磁盘文件等其他数据载体。在得到需要的数据对象之后,将数据对象按照缓存名称存储到相应的缓存实体类中,同时返回该数据对象。
[0027]所述委托函数(delegate)主要用于返回一个object对象,把需要缓存的数据对象的数据源提取操作定义成一个具体的委托函数,并以object类型为该函数的返回值,以参数的方式传递给缓存处理逻辑。这使得在开发不同数据缓存的时候,不需要去重复编写同样的缓存处理逻辑,而只需要去编写不同的数据源操作函数,以参数的形式,通过这个委托函数类型传递给缓存处理逻辑类中,即可获取需要的数据,大大降低了开发成本,提高了程序的可移植性。
[0028]有时候页面请求需要强制显示实时最新的数据,也就是说不管缓存中是否存在数据,都提取最新的数据库数据。这就会用到前面所述的第三个参数,bool类型的缓存刷新标记。在调用缓存处理逻辑函数时,把bool参数设定为true,这样系统会跳过缓存获取流程,而优先通过委托函数提取数据库数据并把提取到的数据响应给请求端,并同时更新缓存中的数据内容。通过上述缓存处理逻辑函数的三个参数,使得我们在调用缓存处理逻辑函数时更加灵活响应不同的用户需求。
[0029]上述实施例为本发明的一种实施方式,但本发明的实施方式并不限定与此,从事该领域技术人员在未背离本发明精神和原则下所做的任何修改、替换、改进,均包含在本发明的保护范围内。
【主权项】
1.高性能数据缓存方法,其特征在于,包括以下步骤: 51、当发起获取数据的请求时,根据传递的请求参数,获取缓存类型标记,根据不同缓存类型的缓存实例来处理获取数据的请求; 52、通过调用缓存工厂类,实例化不同的缓存实体类来操作缓存数据; 53、通过调用缓存处理逻辑函数获取缓存对象。
2.根据权利要求1所述的高性能数据缓存方法,其特征在于,所述步骤S2为: 通过定义一个缓存工厂类,根据传递的请求参数,从项目配置文件中读取不同的缓存配置参数,来实例化不同的缓存实体类,以便按类操作缓存数据。
3.根据权利要求1或2所述的高性能数据缓存方法,其特征在于,所述缓存实体类包括本地缓存和分布式高速缓存。
4.根据权利要求3所述的高性能数据缓存方法,其特征在于,所述本地缓存为使用.net框架提供Cache缓存类。
5.根据权利要求3所述的高性能数据缓存方法,其特征在于,所述分布式高速缓存为独立的分布式内存对象缓存系统,通过在内存中维护哈希表,将磁盘文件调用到内存中,在内存中实现数据的存取,并通过socket通信来传递数据。
6.根据权利要求3所述的高性能数据缓存方法,其特征在于,所述本地缓存用于存储变动频率比较低,而且数据容量相对比较大的数据对象。
7.根据权利要求1或2所述的高性能数据缓存方法,其特征在于,所述缓存实体类采用“项目简称+功能简称+同类型缓存序号+缓存时间”生成扩展名,作为缓存数据的缓存名称。
8.根据权利要求7所述的高性能数据缓存方法,其特征在于,所述步骤S3为: 缓存处理逻辑函数首先根据缓存名称去对应的缓存实体类中获取缓存数据,如果缓存实体类中存在缓存数据,就返回相应的数据对象,若不存在,则通过委托函数去数据源中获取缓存数据;在得到需要的数据对象之后,将数据对象按照缓存名称存储到相应的缓存实体类中,同时返回该数据对象。
9.根据权利要求8所述的高性能数据缓存方法,其特征在于,所述数据源包括数据库及磁盘文件。
10.根据权利要求8所述的高性能数据缓存方法,其特征在于,所述委托函数用于返回一个object对象,把需要缓存的数据对象的数据源提取操作定义成一个具体的委托函数,并以object类型为该函数的返回值,以参数的方式传递给缓存处理逻辑。
【专利摘要】本发明公开了高性能数据缓存方法,包括以下步骤:当发起获取数据的请求时,根据传递的请求参数,获取缓存类型标记,根据不同缓存类型的缓存实例来处理获取数据的请求;通过调用缓存工厂类,实例化不同的缓存实体类来操作缓存数据;通过调用缓存处理逻辑函数获取缓存对象。其中,缓存实体类包括本地缓存和分布式高速缓存。本发明结合web应用程序的特点,采用服务器本地缓存(LocalCache)与独立缓存服务器(MemCache)相结合的模式分类存储数据,极大地降低了数据源的压力,数据访问请求高并发的时候web页面的响应速度得到很大的提高。
【IPC分类】G06F9-44
【公开号】CN104657143
【申请号】CN201510079262
【发明人】傅志山
【申请人】中復保有限公司
【公开日】2015年5月27日
【申请日】2015年2月12日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1