数据缓存方法、装置、电子设备和可读介质制造方法及图纸

技术编号:39247721 阅读:8 留言:0更新日期:2023-10-30 11:59
本申请提供一种数据缓存方法、装置、电子设备和可读介质。该方法包括:获取缓存数据;根据用户空间的循环队列,获取循环队列中的第一虚拟地址,用户空间的第一虚拟地址与内核空间中读缓冲区的物理地址之间存在映射关系;根据第一虚拟地址与内核空间中读缓冲区的物理地址之间的映射关系,将缓存数据写入到第一虚拟地址对应的内核空间的读缓冲区中;通过读缓冲区,将缓存数据记录到缓存文件中。该方法能够降低缓存过程中需要的读写次数,减少缓存过程的占用资源,提高执行效率以避免设备卡顿。提高执行效率以避免设备卡顿。提高执行效率以避免设备卡顿。

【技术实现步骤摘要】
数据缓存方法、装置、电子设备和可读介质


[0001]本申请涉及计算机
,尤其涉及一种数据缓存方法、装置、电子设备和可读介质。

技术介绍

[0002]随着电子科技和网络技术的发展,物联网(The Internet of Things,简称IOT)技术也愈发成熟。在物联网中,各个物联网终端会通过网络发送请求或者上报数据等操作。在弱网络环境中,当这些操作失败时,物联网终端会将数据缓存在本地以便网络恢复后重新发送。
[0003]在相关技术中,缓存数据的方式通过将缓存文件读取到内存中,对内存的文件进行修改后,再将内存中修改后的内容保存到缓存文件中。
[0004]然而,在该过程中,读写缓存数据时都需要在内核空间和用户空间之间复制缓存数据,期间需要进行多次读写,缓存过程的占用资源多且执行效率低,造成设备卡顿。

技术实现思路

[0005]基于上述技术问题,本申请提供一种数据缓存方法、装置、电子设备和可读介质,以降低缓存过程中需要的读写次数,减少缓存过程的占用资源,提高执行效率以避免设备卡顿。
[0006]本申请的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本申请的实践而习得。
[0007]根据本申请实施例的一个方面,提供一种数据缓存方法,包括:
[0008]获取缓存数据;
[0009]根据用户空间的循环队列,获取所述循环队列中的第一虚拟地址,所述用户空间的第一虚拟地址与内核空间中读缓冲区的物理地址之间存在映射关系;
[0010]根据所述第一虚拟地址与内核空间中读缓冲区的物理地址之间的映射关系,将所述缓存数据写入到所述第一虚拟地址对应的所述内核空间的读缓冲区中;
[0011]通过所述读缓冲区,将所述缓存数据记录到缓存文件中。
[0012]根据本申请实施例的一个方面,提供一种数据缓存装置,包括:
[0013]数据获取模块,用于获取缓存数据;
[0014]地址获取模块,用于根据用户空间的循环队列,获取所述循环队列中的第一虚拟地址,所述用户空间的第一虚拟地址与内核空间中读缓冲区的物理地址之间存在映射关系;
[0015]数据写入模块,用于根据所述第一虚拟地址与内核空间中读缓冲区的物理地址之间的映射关系,将所述缓存数据写入到所述第一虚拟地址对应的所述内核空间的读缓冲区中;
[0016]数据记录模块,用于通过所述读缓冲区,将所述缓存数据记录到缓存文件中。
[0017]在本申请的一些实施例中,基于以上技术方案,数据缓存装置还包括:
[0018]数据读取模块,用于将所述缓存文件的缓存数据读取到所述读缓冲区中;
[0019]地址分配模块,用于为所述读缓冲区中的缓存数据分配第二虚拟地址,所述第二虚拟地址与所述读缓冲区的物理地址之间存在映射关系;
[0020]第一队列构建模块,用于根据所述第二虚拟地址与所述读缓冲区的物理地址之间的映射关系和所述读缓冲区的所述缓存数据,在所述用户空间中构建循环队列,所述循环队列中的存储空间通过所述第二虚拟地址指示所述读缓冲区中的缓存数据;
[0021]数据发送模块,用于通过所述循环队列,发送所述缓存数据。
[0022]在本申请的一些实施例中,基于以上技术方案,数据发送模块包括:
[0023]第一位置检查单元,用于检查所述循环队列的队头指针和所述队尾指针在所述循环队列中指示的位置;
[0024]第一指针移动单元,用于若所述队头指针和所述队尾指针指示的位置不同,则将所述队头指针移动到所述队尾指针所指示的位置;
[0025]第一数据读取单元,用于根据所述队头指针所指示的虚拟地址的映射关系,从所述读缓存区中读取待发送缓存数据;
[0026]第一数据发送单元,用于发送所述待发送缓存数据并将所述队头指针前移到下一个位置。
[0027]在本申请的一些实施例中,基于以上技术方案,数据缓存装置还包括:
[0028]第二指针移动单元,用于将所述队尾指针前移到指示所述待处理存储空间的位置;
[0029]数据删除单元,用于根据所述队尾指针所指示的虚拟地址的映射关系,将所述待发送缓存数据从所述内核空间的所述读缓冲区中删除;
[0030]文件更新单元,用于根据所述读缓冲区的数据,更新所述缓存文件以将所述待发送缓存数据从所述缓存文件中删除。
[0031]在本申请的一些实施例中,基于以上技术方案,数据发送模块包括:
[0032]第二位置检查单元,用于检查所述队头指针和所述队尾指针在所述循环队列中指示的位置;
[0033]停止发送单元,用于若所述队头指针和所述队尾指针指示的位置相同,则停止发送数据;
[0034]第二数据读取单元,用于若所述队头指针和所述队尾指针指示的位置不同,则根据所述队尾指针当前指示存储空间的虚拟地址,从所述读缓存区中读取待发送缓存数据;
[0035]第二数据发送单元,用于发送所述待发送缓存数据并将所述队尾指针前移到下一个位置。
[0036]在本申请的一些实施例中,基于以上技术方案,地址获取模块包括:
[0037]第三指针移动单元,用于根据所述循环队列中存储空间的排列顺序以及所述循环队列的队头指针和队尾指针当前指示的位置,将所述队头指针移动到下一个位置;
[0038]地址获取单元,用于获取所述队头指针当前指示位置的地址作为所述第一虚拟地址。
[0039]在本申请的一些实施例中,基于以上技术方案,第三指针移动单元包括:
[0040]队尾指针前移子单元,用于若所述队头指针和所述队尾指针指示的位置满足队满条件,则按照所述循环队列中存储空间的排列顺序,将所述队尾指针前移到下一个位置;
[0041]队头指针前移子单元,用于按照所述循环队列中存储空间的排列顺序,将所述队头指针前移到下一个位置。
[0042]在本申请的一些实施例中,基于以上技术方案,数据缓存装置还包括:
[0043]映射建立模块,用于若所述用户空间中不存在所述循环队列,将所述缓存文件的缓存数据读取到所述读缓冲区中并建立所述读缓冲区中的物理地址与用户空间中虚拟地址之间的映射关系;
[0044]第二队列构建模块,用于根据所述虚拟地址,在所述用户空间中构建所述循环队列,所述循环队列中一个存储空间对应于所述缓存文件中的一个缓存数据。
[0045]在本申请的一些实施例中,基于以上技术方案,数据记录模块包括:
[0046]第一数据复制单元,用于通过处理器将所述读缓冲区中的数据复制到内核缓冲区中;
[0047]第一数据写入单元,用于通过内存访问控制器将所述内核缓冲区中的数据写入到缓存文件。
[0048]在本申请的一些实施例中,基于以上技术方案,数据记录模块包括:
[0049]偏移量获取单元,用于获取所述读缓冲区中数据的数据地址和偏移量;
[0050]偏移量发送单元,用于通过处理器将所述数据地址和所述偏移量发送到内核缓冲区中;...

【技术保护点】

【技术特征摘要】
1.一种数据缓存方法,其特征在于,包括:获取缓存数据;根据用户空间的循环队列,获取所述循环队列中的第一虚拟地址,所述用户空间的第一虚拟地址与内核空间中读缓冲区的物理地址之间存在映射关系;根据所述第一虚拟地址与内核空间中读缓冲区的物理地址之间的映射关系,将所述缓存数据写入到所述第一虚拟地址对应的所述内核空间的读缓冲区中;通过所述读缓冲区,将所述缓存数据记录到缓存文件中。2.根据权利要求1所述的方法,其特征在于,所述通过所述读缓冲区,将所述缓存数据记录到缓存文件中之后,所述方法还包括:将所述缓存文件的缓存数据读取到所述读缓冲区中;为所述读缓冲区中的缓存数据分配第二虚拟地址,所述第二虚拟地址与所述读缓冲区的物理地址之间存在映射关系;根据所述第二虚拟地址与所述读缓冲区的物理地址之间的映射关系和所述读缓冲区的所述缓存数据,在所述用户空间中构建循环队列,所述循环队列中的存储空间通过所述第二虚拟地址指示所述读缓冲区中的缓存数据;通过所述循环队列,发送所述缓存数据。3.根据权利要求2所述的方法,其特征在于,所述通过所述循环队列,发送所述缓存数据,包括:检查所述循环队列的队头指针和所述队尾指针在所述循环队列中指示的位置;若所述队头指针和所述队尾指针指示的位置不同,则将所述队头指针移动到所述队尾指针所指示的位置;根据所述队头指针所指示的虚拟地址的映射关系,从所述读缓存区中读取待发送缓存数据;发送所述待发送缓存数据并将所述队头指针前移到下一个位置。4.根据权利要求3所述的方法,其特征在于,所述发送所述待发送缓存数据并将所述队头指针前移到下一个位置之后,所述方法还包括:将所述队尾指针前移到指示所述待处理存储空间的位置;根据所述队尾指针所指示的虚拟地址的映射关系,将所述待发送缓存数据从所述内核空间的所述读缓冲区中删除;根据所述读缓冲区的数据,更新所述缓存文件以将所述待发送缓存数据从所述缓存文件中删除。5.根据权利要求2所述的方法,其特征在于,所述通过所述循环队列,发送所述缓存数据,包括:检查所述队头指针和所述队尾指针在所述循环队列中指示的位置;若所述队头指针和所述队尾指针指示的位置相同,则停止发送数据;若所述队头指针和所述队尾指针指示的位置不同,则根据所述队尾指针当前指示存储空间的虚拟地址,从所述读缓存区中读取待发送缓存数据;发送所述待发送缓存数据并将所述队尾指针前移到下一个位置。6.根据权利要求1所述的方法,其特征在于,所述根据用户空间的循环队列,获取所述
循环队列中的第一虚拟地址,包括:根据所述循环队列中存储空间的排列顺序以及所述循环队列的队头指针和队尾指针当前指示的位置,将所述队头指针移动到下一个位置;获取所述队头指针当前指示位置的地址作为所述第一虚拟地址。7.根据权利要求6所述的方法,其特征在于,所述根据所述循环队列中存储空间的排列顺序以及所述循环队列的队头指针和队...

【专利技术属性】
技术研发人员:张志强侯锦坤郭润增王少鸣张晓翼吴进发王丹伟刘鸿达晋中望
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:

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

1