基于链表的数据缓存方法、装置、电子设备和存储介质制造方法及图纸

技术编号:28622788 阅读:15 留言:0更新日期:2021-05-28 16:18
本发明专利技术实施例公开了一种基于链表的数据缓存方法、装置、电子设备和存储介质,基于链表的数据缓存方法包括:接收业务端发送的包含节点号的数据查询请求,响应数据查询请求获取存储的链表的链表头参数,链表头参数包括头存储节点的节点头参数的第一存储地址,每个存储节点的节点头参数的内存空间大小相等;根据节点号和第一存储地址确定节点号对应的目标存储节点的节点头参数的第二存储地址,目标存储节点的节点头参数包括数据存储地址;从第二存储地址所指向的内存空间中读取节点头参数以获得数据存储地址;在数据存储地址所指向的内存空间中读取数据发送到业务端,本发明专利技术实施例无需从头存储节点开始遍历每个存储节点,查询数据的效率高。

【技术实现步骤摘要】
基于链表的数据缓存方法、装置、电子设备和存储介质
本专利技术实施例涉及数据存储
,尤其涉及一种基于链表的数据缓存方法、装置、电子设备和存储介质。
技术介绍
在数据存储领域常用链表技术来对数据存储进行管理,使用链表进行数据存储管理的特点是插入、删除数据时效率高,插入或删除数据只需要参考相邻存储节点的指针改变。链表中包括多个存储节点,每个存储节点包括数据域和指针域,每个存储节点的指针域指向该存储节点的下一个存储节点,数据域存储该存储节点的相关参数,例如存储数据的存储地址等参数。目前,查询数据时,需要从链表的头存储节点遍历每个存储节点,在遍历每个存储节点时,根据存储节点的指针域遍历下一个存储节点直到遍历到需要查询的数据,需要从存储节点头一个个遍历查找数据,查询数据的效率低。
技术实现思路
本专利技术提供了一种基于链表的数据缓存方法、装置、电子设备和存储介质,以解决现有技术中采用链表管理数据存储时存在查询数据效率低的问题。第一方面,本专利技术实施例提供了一种基于链表的数据缓存方法,所述链表包括链表头节点和多个存储节点,所述链表头节点的链表头参数和所述存储节点的节点头参数依次存储在连续的内存空间中,每个存储节点的节点头参数对应的内存空间大小相等,所述数据缓存方法包括:接收业务端发送的数据查询请求,所述数据查询请求包括目标存储节点对应的节点号;响应所述数据查询请求,基于预先存储的所述链表头节点的链表头参数,获取头存储节点的节点头参数的第一存储地址;根据所述节点号和所述第一存储地址,确定所述目标存储节点的节点头参数对应的第二存储地址,所述目标存储节点的节点头参数包括数据存储地址;从所述第二存储地址所指向的内存空间中读取所述目标存储节点的节点头参数以获得数据存储地址;在所述数据存储地址所指向的内存空间中读取数据发送到所述业务端第二方面,本专利技术实施例提供了一种基于链表的数据缓存装置,所述链表包括链表头节点和多个存储节点,所述链表头节点的链表头参数和所述存储节点的节点头参数依次存储在连续的内存空间中,每个存储节点的节点头参数对应的内存空间大小相等,所述基于链表的数据缓存装置包括:数据查询请求接收模块,用于接收业务端发送的数据查询请求,所述数据查询请求包括目标存储节点对应的节点号;链表头参数获取模块,用于响应所述数据查询请求,基于预先存储的所述链表头节点的链表头参数,获取头存储节点的节点头参数的第一存储地址;目标存储节点存储地址确定模块,用于根据所述节点号和所述第一存储地址,确定所述目标存储节点的节点头参数对应的第二存储地址,所述目标存储节点的节点头参数包括数据存储地址;数据存储地址读取模块,用于从所述第二存储地址所指向的内存空间中读取所述目标存储节点的节点头参数以获得数据存储地址;数据读取和发送模块,用于在所述数据存储地址所指向的内存空间中读取数据发送到所述业务端。第三方面,本专利技术实施例提供了一种电子设备,所述电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序;当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本专利技术第一方面中所述的基于链表的数据缓存方法。第四方面,本专利技术实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本专利技术第一方面中所述的基于链表的数据缓存方法。本专利技术实施例提供的基于链表的数据缓存方法,预先存储的链表包括链表头节点和存储节点,链表头节点的链表头参数和存储节点的节点头参数依次存储在连续的内存空间中,每个存储节点的节点头参数对应的内存空间大小相等,链表头参数包括头存储节点的节点头参数的第一存储地址,当接收到业务端发送的、包含目标存储节点的节点号的数据查询请求时,响应该数据查询请求获取链表头参数,并根据节点号和第一存储地址来确定节点号对应的目标存储节点的节点头参数的第二存储地址,从第二存储地址所指向的内存空间中读取节点头参数以获得数据存储地址,在数据存储地址所指向的内存空间中读取数据发送到业务端,实现了根据节点号确定数据对应的存储节点的存储地址,直接从该存储地址所指向的内存空间中读取节点头参数以获得数据存储地址,以在该数据存储地址读取需要查询的数据,无需从头存储节点开始遍历每个存储节点,查询数据的效率高。附图说明图1是本专利技术实施例一提供的一种基于链表的数据缓存方法的步骤流程图;图2A是本专利技术实施例二提供的一种基于链表的数据缓存方法的步骤流程图;图2B是本专利技术实施例的链表的示意图;图2C是本专利技术实施例中存储链表的示意图;图3是本专利技术实施例三提供的一种基于链表的数据缓存装置的结构示意图。具体实施方式为使本专利技术解决的技术问题、采用的技术方案和达到的技术效果更加清楚,下面将结合附图对本专利技术实施例的技术方案作进一步的详细描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本专利技术保护的范围。实施例一图1为本专利技术实施例一提供的一种基于链表的数据缓存方法的步骤流程图,本专利技术实施例可适用于通过链表管理数据缓存的情况,该方法可以由本专利技术实施例中的基于链表的数据缓存装置来执行,该基于链表的数据缓存装置可采用软件和/或硬件的方式实现,并集成于电子设备中,如图1所示,本专利技术实施例的基于链表的数据缓存方法具体包括如下步骤:S101、接收业务端发送的数据查询请求,所述数据查询请求包括目标存储节点对应的节点号。本专利技术实施例可用于进程运行过程中将运行的数据存储在内存缓存中,以及对内存缓存中的数据进行查询、删除操作的场景,其中,进程可以是各个应用程序运行时的进程,进程为本专利技术实施例中的业务端,例如,业务端可以是电子设备处理图像、视频、音频时所创建的进程,各个进程在运行时将数据存储到内存中,进程在整个生命周期中不断地在内存中存储数据、查询数据和删除数据,由此可以基于链表来对内存中的数据进行操作。在本专利技术实施例中,可以在指定内存空间中存储预先生成的链表,该链表包括一个链表头节点和多个存储节点,链表头节点设置有链表头参数,每个存储节点头设置有节点头参数,链表的链表头参数和节点头参数存储在指定内存空间中。其中,链表头参数可以包括链表的存储节点总数、存储该链表的内存空间的地址、头存储节点的节点头参数的存储地址、尾存储节点的节点头参数的存储地址、已使用存储节点的数量、节点头参数对应的内存空间大小等,节点头参数包括存储节点的使用状态标识、该存储节点对应的数据的数据大小、数据存储地址、鉴权码等。本专利技术实施例在响应业务端的链表注册请求生成链表时,在指定内存空间中存储链表的链表头参数和节点头参数,示例性地,可以将指定内存空间划分为多个连续的、大小相等的子内存空间,按照链表中链表头节点、各个存储节点的位置关系将对应的链表头参数和头节点本文档来自技高网...

【技术保护点】
1.一种基于链表的数据缓存方法,其特征在于,所述链表包括链表头节点和多个存储节点,所述链表头节点的链表头参数和所述存储节点的节点头参数依次存储在连续的内存空间中,每个存储节点的节点头参数对应的内存空间大小相等,所述基于链表的数据缓存方法包括:/n接收业务端发送的数据查询请求,所述数据查询请求包括目标存储节点对应的节点号;/n响应所述数据查询请求,基于预先存储的所述链表头节点的链表头参数,获取头存储节点的节点头参数的第一存储地址;/n根据所述节点号和所述第一存储地址,确定所述目标存储节点的节点头参数对应的第二存储地址,所述目标存储节点的节点头参数包括数据存储地址;/n从所述第二存储地址所指向的内存空间中读取所述目标存储节点的节点头参数以获得数据存储地址;/n在所述数据存储地址所指向的内存空间中读取数据发送到所述业务端。/n

【技术特征摘要】
1.一种基于链表的数据缓存方法,其特征在于,所述链表包括链表头节点和多个存储节点,所述链表头节点的链表头参数和所述存储节点的节点头参数依次存储在连续的内存空间中,每个存储节点的节点头参数对应的内存空间大小相等,所述基于链表的数据缓存方法包括:
接收业务端发送的数据查询请求,所述数据查询请求包括目标存储节点对应的节点号;
响应所述数据查询请求,基于预先存储的所述链表头节点的链表头参数,获取头存储节点的节点头参数的第一存储地址;
根据所述节点号和所述第一存储地址,确定所述目标存储节点的节点头参数对应的第二存储地址,所述目标存储节点的节点头参数包括数据存储地址;
从所述第二存储地址所指向的内存空间中读取所述目标存储节点的节点头参数以获得数据存储地址;
在所述数据存储地址所指向的内存空间中读取数据发送到所述业务端。


2.根据权利要求1所述的基于链表的数据缓存方法,其特征在于,所述根据所述节点号和所述第一存储地址,确定所述目标存储节点的节点头参数对应的第二存储地址,包括:
计算所述节点号与预设节点头参数的内存空间大小的乘积作为偏移值,所述预设节点头参数内存空间大小是用于存储节点头参数的内存空间大小;
以所述第一存储地址为起始地址偏移所述偏移值,得到所述目标存储节点的节点头参数的第二存储地址。


3.根据权利要求1所述的基于链表的数据缓存方法,其特征在于,所述数据查询请求还包括鉴权码,在从所述第二存储地址所指向的内存空间中读取所述目标存储节点的节点头参数以获得数据存储地址之前,还包括:
获取所述目标存储节点的预设鉴权码;
判断所述数据查询请求中的鉴权码与所述预设鉴权码是否相同;
若是,执行从所述第二存储地址所指向的内存空间中读取所述目标存储节点的节点头参数以获得数据存储地址的步骤;
若否,则返回错误信息到所述业务端。


4.根据权利要求1-3任一项所述的基于链表的数据缓存方法,其特征在于,在接收业务端发送的数据查询请求之前,还包括:
接收业务端发送的链表注册请求,所述链表注册请求包括指定内存地址;
响应所述链表注册请求生成链表,并将所述链表存储在所述指定内存地址所指向的内存空间中,所述链表包括链表头节点和存储节点,所述链表头节点包括链表头参数,所述存储节点包括节点头参数;
向所述业务端返回访问句柄,所述业务端用于根据所述访问句柄访问所述指定内存地址所指向的内存空间以对所述链表进行操作。


5.根据权利要求4所述的基于链表的数据缓存方法,其特征在于,所述链表注册请求还包括数据结构体信息,所述响应所述链表注册请求生成链表,并将所述链表存储在所述指定内存地址所指向的内存空间中,包括:
生成包含链表头和预设数量个存储节点的链表;
根据所述数据结构体信息和所述指定内存地址初始化所述链表头参数和所述节点头参数;
在所述指定内存地址所指向的内存空间中依次存储链表头参数和节点头参数,其中,每个节点头参数的内存空间大小相等。


6.根据权利要求4所述的基于链表的数据缓存方法,其特征在于,所述指定内存所指向的内存空间为静态分配的内存空间。


7.根据权利要求5所述的基于链表的数据缓存方法,其特征在于,所述数据结构体信息包括数据结构体大小,所述根据所述数据结构体信息和所述指定内存地址初始化所述链表头参数和所述节点头参数,包括:
初始化所述链表头的链表头参数,所述链表头参数包括链表存储地址、存储节点总数、当前访问节点号、节点头参数内存空间大小、已使用存储节点数以及头节点地址,其中,所述链表存储地址为所述指定内存地址,所述...

【专利技术属性】
技术研发人员:江汉朝
申请(专利权)人:广州极飞科技股份有限公司
类型:发明
国别省市:广东;44

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

1