用于JAVA平台的数据缓存系统、方法以及计算机终端与流程

文档序号:16430100发布日期:2018-12-28 20:05阅读:164来源:国知局
用于JAVA平台的数据缓存系统、方法以及计算机终端与流程

本发明涉及java平台数据管理领域,更具体地说,涉及一种用于java平台的数据缓存系统、方法以及计算机终端。

背景技术

大量数据流动是web应用性能问题常见的原因,而缓存被广泛的用于优化数据库应用。目前很多基于java的应用程序在数据的操作过程中对数据库的依赖性比较强,数据量较大的访问对数据库响应速度以及并发数量都有较大的瓶颈。而将数据缓存后,应用程序在数据访问过程中将不在完全依赖数据库,直接通过缓存数据进行数据操作,与数据库交互部分依托于数据缓存系统进行处理。

目前数据缓存的方法很多,但是使用过程中针对不同的应用系统时,对大数据量的访问如果缓存数据不完整,或者缓存数据层级关系不当,将导致数据显示不完整以及数据返回性能瓶颈,影响用户使用,无法提供满意的用户体验。数据缓存对数据库的依赖无法做到统一有效的管理。



技术实现要素:

本发明要解决的技术问题在于,针对现有技术的上述数据缓存对数据库的依赖无法做到统一有效的管理的缺陷,提供一种用于java平台的数据缓存系统、方法以及计算机终端。

本发明解决其技术问题所采用的技术方案是:构造一种用于java平台的数据缓存系统,包括:

缓存,所述缓存包括堆内内存和堆外内存;

缓存管理单元,根据待缓存数据及数据存储请求生成相互对应的key值和缓存地址信息,所述缓存地址信息为所述待缓存数据在所述堆外内存的存储地址信息;

堆外内存指示器,用于存储所述缓存地址信息;

所述堆内内存,用于存储所述key值和堆外内存指示器;所述key值和堆外内存指示器相对应;

所述堆外内存,用于存储所述待缓存数据。

进一步,本发明所述的用于java平台的数据缓存系统,所述缓存管理单元,还用于使用lru算法结合设置的预设缓存时间来清理使用的缓存,以及

通过配置所述堆外内存映射到存储介质上的预设文件进行缓存数据的持久化操作;

所述堆外内存缓冲区还用于申请所述堆外内存的存储空间和存储位置,管理所述堆外内存指示器,以及

在所述堆外内存中序列化批量java对象。

另,本发明还提供一种用于java平台的数据缓存方法,应用于缓存管理,所述缓存包括堆内内存和堆外内存,所述方法包括数据缓存过程:

s1、接收待缓存数据及数据存储请求;

s2、缓存管理单元根据所述待缓存数据及数据存储请求生成相互对应的key值和缓存地址信息,所述缓存地址信息为所述待缓存数据在所述堆外内存的存储地址信息;

s3、所述key值存储在所述堆内内存中,所述缓存地址信息存储在所述堆内内存的堆外内存指示器中,所述key值和堆外内存指示器相对应;

s4、所述待缓存数据根据所述缓存地址信息存储在所述堆外内存中。

进一步,本发明所述的用于java平台的数据缓存方法,还包括缓存数据读取过程:

t1、接收缓存数据读取请求;

t2、获取所述缓存数据读取请求对应的key值;

t3、获取与所述key值对应的所述堆外内存指示器存储的所述缓存地址信息,所述缓存地址信息包括所述堆外内存的存储位置和字节大小;

t4、根据所述缓存地址信息从所述堆外内存读取所述缓存数据。

进一步,本发明所述的用于java平台的数据缓存方法,还包括缓存数据清理过程:

使用lru算法结合设置的预设缓存时间来清理使用的缓存。

进一步,本发明所述的用于java平台的数据缓存方法,还包括数据恢复过程:

通过配置所述堆外内存映射到存储介质上的预设文件进行缓存数据的持久化操作。

优选地,本发明所述的用于java平台的数据缓存方法,所述步骤s2中缓存管理单元生成所述缓存地址信息包括:

初始化堆外内存缓冲区列表,堆外内存缓冲区生成所述堆外内存指示器,所述堆外内存指示器用于对所述堆外内存缓冲区进行操作。

优选地,本发明所述的用于java平台的数据缓存方法,所述堆外内存缓冲区用于申请所述堆外内存的存储空间和存储位置,管理所述堆外内存指示器,以及

在所述堆外内存中序列化批量java对象。

优选地,本发明所述的用于java平台的数据缓存方法,所述步骤s2中缓存管理单元生成所述缓存地址信息包括:

java平台应用框架的jar包在同一虚拟机进程中进行所述待缓存数据的缓存操作;存储容量通过输入参数指定或者与java堆的最大值相同。

另,本发明还提供一种计算机终端,包括存储器和处理器;

所述存储器用于存储计算机程序;

所述处理器用于执行所述计算机程序实现如上述的用于java平台的数据缓存方法。

实施本发明的一种用于java平台的数据缓存系统、方法以及计算机终端,具有以下有益效果:该系统包括缓存,缓存包括堆内内存和堆外内存。堆内内存用于存储key值和堆外内存指示器,key值和堆外内存指示器相对应;堆外内存用于存储待缓存数据。缓存管理单元,根据待缓存数据及数据存储请求生成相互对应的key值和缓存地址信息,缓存地址信息为待缓存数据在堆外内存的存储地址信息;堆外内存指示器,用于存储缓存地址信息。通过实施本发明,实现对缓存的同一高效管理,减少垃圾回收时间;实现进程共享,较少虚拟机间的对象复制;并可实现持久化存储的快速重启。

附图说明

下面将结合附图及实施例对本发明作进一步说明,附图中:

图1是本发明一种用于java平台的数据缓存系统的结构示意图;

图2是本发明一种用于java平台的数据缓存方法中数据存储流程图;

图3是本发明一种用于java平台的数据缓存方法中数据读取流程图;

图4是本发明一种计算机终端结构示意图。

具体实施方式

为了对本发明的技术特征、目的和效果有更加清楚的理解,现对照附图详细说明本发明的具体实施方式。

图1是本发明一种用于java平台的数据缓存系统的结构示意图。

具体的,该用于java平台的数据缓存系统包括:

缓存(cache),缓存包括堆内内存(on-heap)和堆外内存(off-heap),缓存为用于存储数据或程序的高速存储介质,在使用时可快速调用其中的数据;缓存为最终操作的缓存类提供put(key,value)get(key)remove(key)等缓存操作。堆内内存,用于存储key值和堆外内存指示器,key值和堆外内存指示器相对应;堆外内存,用于存储待缓存数据。堆内内存的concurrenthashmap的key-value结构,key值就是具体的键值,value存储的是这个key值在堆外内地的指示位置,即堆外内存的地址,存储在堆外内存指示器中。

缓存管理单元(cachemanager),根据待缓存数据及数据存储请求生成相互对应的key值和缓存地址信息,缓存地址信息为待缓存数据在堆外内存的存储地址信息,缓存地址信息包括堆外内存的存储位置和字节大小。进一步,缓存管理单元管理缓存提供list<offheapbuffer>数据格式,动态分配堆外内存字节缓冲区(offheapbuffer)大小,清理缓存超时时间,及数据持久化恢复操作等。堆外内存字节缓冲区用于申请堆外内存空间和最终存储的位置,其包含堆外内存指示器的管理,能够在堆外内存中序列化大批量java对象,而不影响java虚拟机(jvm)的垃圾收集性能。

堆外内存指示器(directindicate),用于存储缓存地址信息,即在对内内存中形成key值和堆外内存指示器的对应关系,该处的缓存地址信息是数据真是的存储位置。

进一步,本发明的用于java平台的数据缓存系统中缓存管理单元还用于使用lru算法结合设置的预设缓存时间来清理使用的缓存,以及通过配置堆外内存映射到存储介质上的预设文件进行缓存数据的持久化操作。lru算法可参考现有技术,本发明在此不再赘述。

堆外内存缓冲区还用于申请堆外内存的存储空间和存储位置,管理堆外内存指示器,以及在堆外内存中序列化批量java对象。

本发明还提供一种用于java平台的数据缓存方法,应用于缓存管理,可用于上述的缓存系统中。缓存包括堆内内存和堆外内存,堆外内存缓冲区用于申请堆外内存的存储空间和存储位置,管理堆外内存指示器,以及在堆外内存中序列化批量java对象。

参考图2,该方法包括数据缓存过程:

s1、接收待缓存数据及数据存储请求;

s2、缓存管理单元根据待缓存数据及数据存储请求生成相互对应的key值和缓存地址信息,缓存地址信息为待缓存数据在堆外内存的存储地址信息。进一步,缓存管理单元根据待缓存数据及数据存储请求动态申请需要分配的堆外空间,生成相互对应的key值和缓存地址信息。

步骤s2中缓存管理单元生成缓存地址信息包括:初始化堆外内存缓冲区列表,堆外内存缓冲区生成堆外内存指示器,堆外内存指示器用于对堆外内存缓冲区进行操作。

优选地,步骤s2中缓存管理单元生成缓存地址信息包括:java平台应用框架的jar包在同一虚拟机进程中进行待缓存数据的缓存操作;存储容量通过输入参数指定或者与java堆的最大值(-xmx指定)相同,或者通过-xx:maxdirectmemorysize指定。

s3、key值存储在堆内内存中,缓存地址信息存储在堆内内存的堆外内存指示器中,key值和堆外内存指示器相对应。

s4、待缓存数据根据缓存地址信息存储在堆外内存中。

参考图3,在数据按照本发明的方法进行缓存后,本发明的用于java平台的数据缓存方法还包括缓存数据读取过程:

t1、接收缓存数据读取请求;

t2、获取缓存数据读取请求对应的key值。

t3、获取与key值对应的堆外内存指示器存储的缓存地址信息,缓存地址信息包括堆外内存的存储位置和字节大小;

t4、根据缓存地址信息从堆外内存读取缓存数据。

进一步,本发明的用于java平台的数据缓存方法,还包括缓存数据清理过程:

使用lru算法结合设置的预设缓存时间来清理使用的缓存。

进一步,本发明的用于java平台的数据缓存方法,还包括数据恢复过程:

通过配置堆外内存映射到存储介质上的预设文件进行缓存数据的持久化操作。

参考图4,本发明还提供一种计算机终端,包括存储器和处理器;

存储器用于存储计算机程序;

处理器用于执行计算机程序实现如上述的用于java平台的数据缓存方法。

优选地,计算机终端可为笔记本、台式机、平板电脑、智能手机等终端,也可为服务器。

本发明利用堆内内存进行key的存储因为key的占用内存是相当小的而且处理逻辑又很快,然后利用堆外内存可以存储大量数据的特点。实现对缓存的同一高效管理,减少垃圾回收时间;实现进程共享,较少虚拟机间的对象复制;并可实现持久化存储的快速重启。

以上实施例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人士能够了解本发明的内容并据此实施,并不能限制本发明的保护范围。凡跟本发明权利要求范围所做的均等变化与修饰,均应属于本发明权利要求的涵盖范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1