【技术实现步骤摘要】
基于Java技术实现内存键值数据管理的方法及其装置
[0001]本专利的实施例总体上涉及分布式内存数据管理领域,并且更具体地,涉及一种基于Java技术实现内存键值数据管理的方法、装置、计算机程序产品、以及计算机可读存储介质。
技术介绍
[0002]高并发、低延时是业务支撑系统技术发展的核心需求之一,传统的技术架构受数据库访问瓶颈限制,很难同时满足不同业务量下的系统响应需求。因此,技术架构需要补充和调整,特别是通过缓存技术来解决数据库访问的并发和延迟问题。缓存技术出现的基础理论支撑是利用内存的IO高效特性,提升应用数据访问效率,其中最简单的是在每个应用服务中开辟一块内存,存放缓存的数据。
[0003]但是在一个分布式或者集群的环境中,应用服务会部署多套,如果每个服务的内存是不能共享的,则会导致大规模数据混乱,这就需要使用共享数据缓存技术。在共享数据缓存技术中,不论部署多少个访问数据的服务,都会去访问同一套内存缓存,而内存缓存能力根据业务需要去扩展,同时依赖独立的共享数据缓存技术来维持数据的一致性即可满足业务需要。 />[0004]相应本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种基于Java技术实现内存键值数据管理的方法,其特征在于,包括:将应用的对象划分为临时性业务对象、以及长期性业务对象;其中,所述临时性业务对象是业务处理过程中临时产生的对象,所述临时性业务对象留在新生代区;所述长期性业务对象是业务处理过程中长期有效的对象,所述长期性业务对象留在旧生代区;针对所述临时性业务对象,在业务处理完成之后会立即释放,以使得所述临时性业务对象留在所述新生代区、并在释放时被Java虚拟机的垃圾回收机制快速回收;针对所述长期性业务对象,在数据存储内存区域中创建一个或多个基础内存、以及一个或多个扩展内存;其中,每个基础内存为一个对象,用于存放n条键值数据,其中n大于等于1;每个扩展内存为一个对象,用于存储所述键值数据中value的扩展数据。2.根据权利要求1所述的基于Java技术实现内存键值数据管理的方法,其特征在于,每个基础内存包括占用第一内存空间的key索引、以及占用第二内存空间的n条键值数据。3.根据权利要求2所述的基于Java技术实现内存键值数据管理的方法,其特征在于,每个基础内存的起始部分为所述key索引,后续部分为所述n条键值数据。4.根据权利要求3所述的基于Java技术实现内存键值数据管理的方法,其特征在于,所述基础内存的类型为整型数组;所述key索引占用(3+1)n个整型数组空间。5.根据权利要求1
‑
4中任一项所述的基于Java技术实现内存键值数据管理的方法,其特征在于,每条键值数据包括第一固定长度的key数据、第二固定长度的value数据、1个扩展value位置信息、以及1个扩展value长度信息。6.根据权利要求5所述的基于Java技术实现内存键值数据管理的方法,其特征在于,所述扩展内存在待处理的value的长度超过第二固定长度时创建,所述扩展内存用于存储value的扩展数据。7.根据权利要求6所述的基于Java技术实现内存键值数据管理的方法,其特征在于,每个扩展内存被分为一个或多个虚拟存储块,每个扩展内存的起始部分用于表示其内部的虚拟存储块的状态。8.根据权利要求7所述的基于Java技术实现内存键值数据管理的方法,其特征在于,所述扩展内存的类型为byte字节数组;所述虚拟存储块的状态包括以下各项中的至少一项:未分配、已分配、已删除但未回收。9.根据权利要求8所述的基于Java技术实现内存键值数据管理的方法,其特征在于,每个基础内存的大小不超过2G;每个虚拟存储块为4k,每个扩展内存中虚拟存储块的总大小不超过1G;所述虚拟存储块用0代表未分配,用1代表已分配,用2代表已删除但未回收。10.根据权利要求1
‑
4、6
‑
9中任一项所述的基于Java技术实现内存键值数据管理的方法,其特征在于,在管理所述键值数据时,所述方法包括缓存初始化步骤;所述缓存初始化步骤包括:根据所述基础内存中待存放的键值数据的数量n、保存key需要的大小k
size
,保存value需要的最大值v
max
和最小值v
min
,计算所述基础内存的大小。11.根据权利要求10所述的基于Java技术实现内存键值数据管理的方法,其特征在于,所述缓存初始化步骤还包括:
在计算出的size大于2G时,将n减半,并将所述基础内存的总块数b加倍,然后重新计算直到满足所述size不超过2G为止,其中b的初始值为1;然后根据计算结果来创建b个大小为size的整型数组,从而完成基础内存的创建。12.根据权利要求11所述的基于Java技术实现内存键值数据管理的方法,其特征在于,所述缓存初始化步骤还包括:在待处理的value的长度超过v
min
时,用于存储value的扩展数据;每个扩展内存的有效存储区为1G固定大小,被分成4k一个的虚拟存储块;每个扩展内存起始的256k个字节数组空间用于表示各虚拟存储块的状态;每个扩展内存的总大小为1074003968个字节数组空间。13.根据权利要求1
‑
4、6
‑
9中任一项所述的基于Java技术实现内存键值数据管理的方法,其特征在于,在管理所述键值数据时,所述方法包括创建数据步骤;所述创建数据步骤包括:在应用收到新的键值数据时,根据传入的key计算索引值hash;根据所计算的索引值hash来计算索引位置;以及根据所述基础内存中的已有数据状...
【专利技术属性】
技术研发人员:李罡,周正茂,
申请(专利权)人:北京优合融宜科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。