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

技术编号:23764135 阅读:31 留言:0更新日期:2020-04-11 18:56
本申请提出一种数据缓存方法、装置、电子设备及存储介质。具体实现方案为:将缓存中的待执行刷新操作的逻辑缓存卷插入到刷新任务队列中;将刷新任务队列的队首元素取出,并将队首元素作为当前缓存卷;确定当前缓存卷的状态;在当前缓存卷的状态是已写满状态的情况下,在刷新任务队列中选择当前缓存卷作为执行刷新操作的逻辑缓存卷。本申请实施例中,将已写满状态的当前缓存卷作为执行刷新操作的逻辑缓存卷,利用连续大块的顺序存储的数据读写吞吐量大于零散的小块数据读写量的特性,从而充分利用数据的访问的连续性,提高了缓存的刷新效率和系统的数据吞吐量,进而提高缓存的命中率。

Data caching method, device, electronic equipment and storage medium

【技术实现步骤摘要】
数据缓存方法、装置、电子设备及存储介质
本申请涉及信息
,尤其涉及一种数据缓存方法、装置、电子设备及存储介质。
技术介绍
缓存(Cache)是数据交换的缓冲区。例如应用程序要读取数据时,会首先从缓存查询数据。若从缓存中查询到数据,则表示已经命中缓存,数据被读取并返回给应用程序。如果在缓存中没有查询到数据,则未命中缓存。应用程序必须做一些额外的工作,例如需要从下层存储设备来读取数据,将数据返回给客户端。传统的缓存算法在缓存未命中的情况下,性能退化比较严重,例如存在缓存的刷新效率低从而导致命中率低的问题。
技术实现思路
本申请实施例提供一种数据缓存方法、装置、电子设备及存储介质,以解决相关技术存在的问题,技术方案如下:第一方面,本申请实施例提供了一种数据缓存方法,包括:将缓存中的待执行刷新操作的逻辑缓存卷插入到刷新任务队列中;将刷新任务队列的队首元素取出,并将队首元素作为当前缓存卷;确定当前缓存卷的状态;在当前缓存卷的状态是已写满状态的情况下,在刷新任务队列中选择当前缓存卷作为执行刷新操作的逻辑缓存卷。在一种实施方式中,获取当前缓存卷的状态之后,上述方法还包括:在所述当前缓存卷的状态是未写满状态的情况下,对当前缓存卷的跳过计数值进行累加操作;在跳过计数值小于预设最大计数值的情况下,将当前缓存卷推入刷新任务队列的队尾;在跳过计数值等于预设最大计数值的情况下,将当前缓存卷推入优先刷新队列,优先刷新队列用于记录待优先执行刷新操作的逻辑缓存卷。在一种实施方式中,将刷新任务队列的队首元素取出之后,上述方法还包括:对预先设置的访问计数进行累加操作;将刷新任务队列的队首元素取出之前,方法还包括:在访问计数小于等于刷新任务队列的长度的情况下,转向执行将刷新任务队列的队首元素取出的步骤;在访问计数大于刷新任务队列的长度的情况下,确定不对刷新任务队列中的逻辑缓存卷执行刷新操作。在一种实施方式中,将刷新任务队列的队首元素取出之前,上述方法还包括:在当前挂起的读写任务数小于预设最大挂起任务数的情况下,将刷新优先刷新队列中的逻辑缓存卷加入到当前挂起的读写任务中。在一种实施方式中,将刷新任务队列的队首元素取出之前,上述方法还包括:判断当前挂起的读写任务数是否大于预设最小挂起任务数;在当前挂起的读写任务数大于预设最小挂起任务数的情况下,转向执行将刷新任务队列的队首元素取出的步骤,以在所述刷新任务队列中选择执行刷新操作的逻辑缓存卷;在当前挂起的读写任务数小于等于预设最小挂起任务数的情况下,利用最近最少使用算法在刷新任务队列中选择执行刷新操作的逻辑缓存卷。在一种实施方式中,在刷新任务队列中选择执行刷新操作的逻辑缓存卷,还包括:获取读写开关指示的状态,读写开关指示的状态包括在刷新任务队列中当前执行的任务是读任务或写任务,在刷新任务队列中读任务对应的任务队列为读任务队列,在刷新任务队列中写任务对应的任务队列为写任务队列;确定与读写开关指示的状态对应的任务队列是否为空队列;在读写开关指示的状态对应的任务队列不是空队列的情况下,选择读写开关指示的状态对应的任务队列作为当前的刷新任务队列,在当前的刷新任务队列中选择执行刷新操作的逻辑缓存卷;在读写开关指示的状态对应的任务队列是空队列的情况下,确定与读写开关指示的状态的翻转状态对应的任务队列是否为空队列;在读写开关指示的状态的翻转状态对应的任务队列不是空队列的情况下,选择读写开关指示的状态的翻转状态对应的任务队列作为当前的刷新任务队列,在当前的刷新任务队列中选择执行刷新操作的逻辑缓存卷。在一种实施方式中,将缓存中的待执行刷新操作的逻辑缓存卷插入到刷新任务队列中,包括:判断待执行刷新操作的逻辑缓存卷是否在当前的刷新任务队列中;若待执行刷新操作的逻辑缓存卷在当前的刷新任务队列中,则将述待执行刷新操作的逻辑缓存卷移除并插入到当前的刷新任务队列的队尾;若待执行刷新操作的逻辑缓存卷不在当前的刷新任务队列中,则将述待执行刷新操作的逻辑缓存卷插入到当前的刷新任务队列的队尾;将待执行刷新操作的逻辑缓存卷的跳过计数值进行清零操作。在一种实施方式中,上述方法还包括:接收写任务;获取逻辑缓存卷;将数据写入逻辑缓存卷并修改写入数据区域变量;根据写入数据区域变量设置逻辑缓存卷的状态,逻辑缓存卷的状态包括已写满状态或未写满状态;转向执行将刷新任务队列的队首元素取出的步骤;释放逻辑缓存卷。在一种实施方式中,上述方法还包括:接收读任务;获取逻辑缓存卷;判断写入数据区域变量是否包括读任务中指示的数据读取区域;若写入数据区域变量不包括读任务中指示的数据读取区域,则转向执行将刷新任务队列的队首元素取出的步骤;若数据区域包括读任务中指示的数据读取区域,则从逻辑缓存卷中读取数据并修改已读数据区域变量;判断已读数据区域变量是否是逻辑缓存卷的全范围;若否则将逻辑缓存卷移至读任务对应的任务队列的队首;释放逻辑缓存卷。第二方面,本申请实施例提供了一种数据缓存装置,包括:插入单元,用于将缓存中的待执行刷新操作的逻辑缓存卷插入到刷新任务队列中;取出单元,用于将刷新任务队列的队首元素取出,并将队首元素作为当前缓存卷;确定单元,用于确定当前缓存卷的状态;选择单元,用于在当前缓存卷是已写满状态的情况下,在刷新任务队列中选择当前缓存卷作为执行刷新操作的逻辑缓存卷。在一种实施方式中,上述装置还包括调整单元,调整单元用于:在当前缓存卷的状态是未写满状态的情况下,对当前缓存卷的跳过计数值进行累加操作;在跳过计数值小于预设最大计数值的情况下,将当前缓存卷推入刷新任务队列的队尾;在跳过计数值等于预设最大计数值的情况下,将当前缓存卷推入优先刷新队列,优先刷新队列用于记录待优先执行刷新操作的逻辑缓存卷。在一种实施方式中,上述装置还包括遍历单元,遍历单元用于:对预先设置的访问计数进行累加操作;将刷新任务队列的队首元素取出之前,方法还包括:在访问计数小于等于刷新任务队列的长度的情况下,转向执行将刷新任务队列的队首元素取出的步骤;在访问计数大于刷新任务队列的长度的情况下,确定不对刷新任务队列中的逻辑缓存卷执行刷新操作。在一种实施方式中,上述装置还包括任务控制单元,任务控制单元包括第一控制子单元,第一控制子单元用于:在当前挂起的读写任务数小于预设最大挂起任务数的情况下,将刷新优先刷新队列中的逻辑缓存卷加入到当前挂起的读写任务中。在一种实施方式中,任务控制单元还包括第二控制子单元,第二控制子单元包括:判断子单元,用于判断当前挂起的读写任务数是否大于预设最小挂起任务数;选择子单元,用于:在当前挂起的读写任务本文档来自技高网...

【技术保护点】
1.一种数据缓存方法,其特征在于,包括:/n将缓存中的待执行刷新操作的逻辑缓存卷插入到刷新任务队列中;/n将所述刷新任务队列的队首元素取出,并将所述队首元素作为当前缓存卷;/n确定所述当前缓存卷的状态;/n在所述当前缓存卷的状态是已写满状态的情况下,在所述刷新任务队列中选择所述当前缓存卷作为执行刷新操作的逻辑缓存卷。/n

【技术特征摘要】
1.一种数据缓存方法,其特征在于,包括:
将缓存中的待执行刷新操作的逻辑缓存卷插入到刷新任务队列中;
将所述刷新任务队列的队首元素取出,并将所述队首元素作为当前缓存卷;
确定所述当前缓存卷的状态;
在所述当前缓存卷的状态是已写满状态的情况下,在所述刷新任务队列中选择所述当前缓存卷作为执行刷新操作的逻辑缓存卷。


2.根据权利要求1所述的方法,其特征在于,所述获取所述当前缓存卷的状态之后,所述方法还包括:
在所述当前缓存卷的状态是未写满状态的情况下,对所述当前缓存卷的跳过计数值进行累加操作;
在所述跳过计数值小于所述预设最大计数值的情况下,将所述当前缓存卷推入所述刷新任务队列的队尾;
在所述跳过计数值等于所述预设最大计数值的情况下,将所述当前缓存卷推入优先刷新队列,所述优先刷新队列用于记录待优先执行刷新操作的逻辑缓存卷。


3.根据权利要求1所述的方法,其特征在于,将所述刷新任务队列的队首元素取出之后,所述方法还包括:对预先设置的访问计数进行累加操作;
将所述刷新任务队列的队首元素取出之前,所述方法还包括:
在所述访问计数小于等于所述刷新任务队列的长度的情况下,转向执行所述将所述刷新任务队列的队首元素取出的步骤;
在所述访问计数大于所述刷新任务队列的长度的情况下,确定不对所述刷新任务队列中的逻辑缓存卷执行刷新操作。


4.根据权利要求2或3所述的方法,其特征在于,将所述刷新任务队列的队首元素取出之前,所述方法还包括:
在当前挂起的读写任务数小于预设最大挂起任务数的情况下,将刷新所述优先刷新队列中的逻辑缓存卷加入到当前挂起的读写任务中。


5.根据权利要求1-3中任一项所述的方法,其特征在于,将所述刷新任务队列的队首元素取出之前,所述方法还包括:
判断当前挂起的读写任务数是否大于预设最小挂起任务数;
在当前挂起的读写任务数大于预设最小挂起任务数的情况下,转向执行将所述刷新任务队列的队首元素取出的步骤,以在所述刷新任务队列中选择执行刷新操作的逻辑缓存卷;
在当前挂起的读写任务数小于等于预设最小挂起任务数的情况下,利用最近最少使用算法在所述刷新任务队列中选择执行刷新操作的逻辑缓存卷。


6.根据权利要求5所述的方法,其特征在于,在所述刷新任务队列中选择执行刷新操作的逻辑缓存卷,还包括:
获取读写开关指示的状态,所述读写开关指示的状态包括在所述刷新任务队列中当前执行的任务是读任务或写任务,在所述刷新任务队列中所述读任务对应的任务队列为读任务队列,在所述刷新任务队列中所述写任务对应的任务队列为写任务队列;
确定与所述读写开关指示的状态对应的任务队列是否为空队列;
在所述读写开关指示的状态对应的任务队列不是空队列的情况下,选择所述读写开关指示的状态对应的任务队列作为当前的刷新任务队列,在当前的刷新任务队列中选择执行刷新操作的逻辑缓...

【专利技术属性】
技术研发人员:高华龙
申请(专利权)人:北京云宽志业网络技术有限公司
类型:发明
国别省市:北京;11

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

1