利用堆外内存实现本地缓存的方法和装置制造方法及图纸

技术编号:28033670 阅读:50 留言:0更新日期:2021-04-09 23:15
本发明专利技术公开了利用堆外内存实现本地缓存的方法和装置,涉及计算机技术领域。该方法的一具体实施方式包括:响应于数据缓存请求,从堆外缓存容器列表中获取堆外缓存容器;将所述数据缓存请求中的待缓存数据保存至所述堆外缓存容器中;将所述待缓存数据的标识信息以及所述堆外缓存容器的标识信息存入堆外缓存引用映射,以实现利用堆外内存实现本地缓存。该实施方式利用堆外内存实现本地缓存堆外存储,能够降低缓存对GC和业务应答的影响,提高系统性能。

【技术实现步骤摘要】
利用堆外内存实现本地缓存的方法和装置
本专利技术涉及计算机
,尤其涉及一种利用堆外内存实现本地缓存的方法和装置。
技术介绍
本地缓存,是相对于分布式缓存来说的。一般是指在互联网高并发海量请求场景下,将高频的、变化较少的数据,缓存在本地存储媒介上,例如本地内存中,达到快速响应响应用户请求、降低对数据库的压力的目的。在JAVA本地缓存实现中,缓存数据都是直接保存在堆(Heap)中。在实现本专利技术过程中,专利技术人发现现有技术中至少存在如下问题:(1)缓存的数据越大,缓存的时间越长,越容易导致YGC(对新生代堆进行GC(GarbageCollection,垃圾收集、垃圾回收))频率变高,时间变长,当缓存数据达到一定阈值,会触发FullGC(对所有堆进行GC),导致应用整体停顿;(2)严重影响系统的正常应答,请求的响应时间还要高于直接请求数据库获取数据再返回的时间;(3)当缓存数据过大且无法回收时,可能会引起内存溢出。
技术实现思路
有鉴于此,本专利技术实施例提供一种利用堆外内存实现本地缓存的方法和装置,利用堆外内存实现本地缓存堆外存储,能够降低缓存对GC和业务应答的影响,提高系统性能。为实现上述目的,根据本专利技术实施例的一个方面,提供了一种利用堆外内存实现本地缓存的方法,包括:响应于数据缓存请求,从堆外缓存容器列表中获取堆外缓存容器;将所述数据缓存请求中的待缓存数据保存至所述堆外缓存容器中;将所述待缓存数据的标识信息以及所述堆外缓存容器的标识信息存入堆外缓存引用映射,以实现利用堆外内存实现本地缓存。可选地,本专利技术实施例的方法还包括:监控堆外内存中所有缓存数据的平均大小以及所有堆外缓存容器的写入总次数,以确定所述堆外内存的波动值;当所述波动值满足预设波动条件时,调整所述堆外内存中堆外缓存容器的数量以及大小。可选地,按照如下公式确定所述堆外内存的波动值:C=(Am(1)-Am(2))×logM(Count)式中,C代表所述堆外内存的波动值;Am(1)代表当前时段内所述堆外内存中所有缓存数据的平均大小;Am(2)代表当前时段的前一时段内所述堆外内存中所有缓存数据的平均大小;M代表正数;Count代表当前时段内所述堆外内存中所有堆外缓存容器的写入总次数。可选地,本专利技术实施例的方法还包括:判断所述堆外缓存容器中保存的数据是否满足预设缓存条件;若否,则更新所述堆外容器中保存的所述缓存数据。可选地,读取数据时,根据堆外缓存引用映射,确定堆外内中是否存在待读取数据的标识信息;若存在,则根据堆外缓存引用映射确定所述堆外内存中与所述标识信息对应的堆外容器,从所述堆外容器中获取与所述标识信息对应的缓存数据;若不存在,则从数据库获取与所述标识信息对应的数据,将与所述标识信息对应的数据保存至所述堆外内存中,更新所述堆外缓存引用映射。可选地,从所述堆外容器中获取与所述标识信息对应的缓存数据的步骤之前,还包括:确定所述缓存数据满足预设读取条件;以及,当所述缓存数据不满足所述预设读取条件时,从数据库获取与所述标识信息对应的数据,将与所述标识信息对应的数据保存至所述堆外内存中。根据本专利技术实施例的第二方面,提供一种利用堆外内存实现本地缓存的装置,包括:响应模块,响应于数据缓存请求,从堆外缓存容器列表中获取堆外缓存容器;保存模块,将所述数据缓存请求中的待缓存数据保存至所述堆外缓存容器中;映射模块,将所述待缓存数据的标识信息以及所述堆外缓存容器的标识信息存入堆外缓存引用映射,以实现利用堆外内存实现本地缓存。可选地,本专利技术实施例的装置还包括监控模块,用于:监控堆外内存中所有缓存数据的平均大小以及所有堆外缓存容器的写入总次数,以确定所述堆外内存的波动值;当所述波动值满足预设波动条件时,调整所述堆外内存中堆外缓存容器的数量以及大小。可选地,按照如下公式确定所述堆外内存的波动值:C=(Am(1)-Am(2))×logM(Count)式中,C代表所述堆外内存的波动值;Am(1)代表当前时段内所述堆外内存中所有缓存数据的平均大小;Am(2)代表当前时段的前一时段内所述堆外内存中所有缓存数据的平均大小;M代表正数;Count代表当前时段内所述堆外内存中所有堆外缓存容器的写入总次数。可选地,本专利技术实施例的装置还包括更新模块,用于:判断所述堆外缓存容器中保存的数据是否满足预设缓存条件;若否,则更新所述堆外容器中保存的所述缓存数据。可选地,本专利技术实施例的装置还包括读取模块,用于:读取数据时,根据堆外缓存引用映射,确定堆外内中是否存在待读取数据的标识信息;若存在,则根据堆外缓存引用映射确定所述堆外内存中与所述标识信息对应的堆外容器,从所述堆外容器中获取与所述标识信息对应的缓存数据;若不存在,则从数据库获取与所述标识信息对应的数据,将与所述标识信息对应的数据保存至所述堆外内存中,更新所述堆外缓存引用映射。可选地,所述读取模块还用于:从所述堆外容器中获取与所述标识信息对应的缓存数据的步骤之前,确定所述缓存数据满足预设读取条件;以及,当所述缓存数据不满足所述预设读取条件时,从数据库获取与所述标识信息对应的数据,将与所述标识信息对应的数据保存至所述堆外内存中。根据本专利技术实施例的第三方面,提供一种利用堆外内存实现本地缓存的电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本专利技术实施例第一方面提供的方法。根据本专利技术实施例的第四方面,提供一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本专利技术实施例第一方面提供的方法。上述专利技术中的一个实施例具有如下优点或有益效果:利用堆外内存实现本地缓存,能够减少系统GC及FullGC,降低缓存对GC和业务应答的影响,提高系统性能。上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。附图说明附图用于更好地理解本专利技术,不构成对本专利技术的不当限定。其中:图1是根据本专利技术实施例的利用堆外内存实现本地缓存的方法的主要流程的示意图;图2是根据本专利技术实施例的利用堆外内存实现本地缓存的方法的原理示意图;图3是根据本专利技术实施例的利用堆外内存实现本地缓存的方法中读取数据的原理示意图;图4是本专利技术可选实施例中利用堆外内存实现本地缓存的方法的原理示意图;图5是根据本专利技术实施例的利用堆外内存实现本地缓存的装置的主要模块的示意图;图6是本专利技术实施例可以应用于其中的示例性系统架构图;图7是适于用来实现本专利技术实施例的终端设备或服务器的计算机系统的结构示意图。具体实施方式以下结合附图对本专利技术的示范性实施例做出说明,其中包括本专利技术实施例的各种细节以助于理解,应当将它们认为仅仅是示本文档来自技高网...

【技术保护点】
1.一种利用堆外内存实现本地缓存的方法,其特征在于,包括:/n响应于数据缓存请求,从堆外缓存容器列表中获取堆外缓存容器;/n将所述数据缓存请求中的待缓存数据保存至所述堆外缓存容器中;/n将所述待缓存数据的标识信息以及所述堆外缓存容器的标识信息存入堆外缓存引用映射,以实现利用堆外内存实现本地缓存。/n

【技术特征摘要】
1.一种利用堆外内存实现本地缓存的方法,其特征在于,包括:
响应于数据缓存请求,从堆外缓存容器列表中获取堆外缓存容器;
将所述数据缓存请求中的待缓存数据保存至所述堆外缓存容器中;
将所述待缓存数据的标识信息以及所述堆外缓存容器的标识信息存入堆外缓存引用映射,以实现利用堆外内存实现本地缓存。


2.如权利要求1所述的方法,其特征在于,还包括:
监控堆外内存中所有缓存数据的平均大小以及所有堆外缓存容器的写入总次数,以确定所述堆外内存的波动值;当所述波动值满足预设波动条件时,调整所述堆外内存中堆外缓存容器的数量以及大小。


3.如权利要求2所述的方法,其特征在于,按照如下公式确定所述堆外内存的波动值:
C=(Am(1)-Am(2))×logM(Count)
式中,C代表所述堆外内存的波动值;Am(1)代表当前时段内所述堆外内存中所有缓存数据的平均大小;Am(2)代表当前时段的前一时段内所述堆外内存中所有缓存数据的平均大小;M代表正数;Count代表当前时段内所述堆外内存中所有堆外缓存容器的写入总次数。


4.如权利要求2所述的方法,其特征在于,还包括:判断所述堆外缓存容器中保存的数据是否满足预设缓存条件;若否,则更新所述堆外容器中保存的所述缓存数据。


5.如权利要求1所述的方法,其特征在于,读取数据时,
根据堆外缓存引用映射,确定堆外内中是否存在待读取数据的标识信息;
若存在,则根据堆外缓存引用映射确定所述堆外内存中与所述标识信息对应的堆外容器,从所述堆外容器中获取与所述标识信息对应的缓存数据;
若不存...

【专利技术属性】
技术研发人员:马浩
申请(专利权)人:北京京东尚科信息技术有限公司北京京东世纪贸易有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1