一种数据缓存方法、装置、设备及介质

文档序号:1098498 发布日期:2020-09-25 浏览:12次 >En<

阅读说明:本技术 一种数据缓存方法、装置、设备及介质 (Data caching method, device, equipment and medium ) 是由 刘延兴 于 2020-08-20 设计创作,主要内容包括:本公开实施例涉及一种数据缓存方法、装置、设备及介质,其中该方法包括:获取待缓存数据;按照至少两个属性维度,确定所述待缓存数据的缓存权值,其中一个所述属性维度为访问时间;如果所述待缓存数据在缓存空间中未命中且所述缓存空间不满足数据淘汰条件,则基于所述待缓存数据的缓存权值,将所述待缓存数据存储在所述缓存空间。采用上述技术方案,数据可以基于包括时间的多个维度进行缓存,相较于现有的单一维度,有效提高了缓存空间数据的命中率和访问效率。(The embodiment of the disclosure relates to a data caching method, a data caching device and a data caching medium, wherein the method comprises the following steps: acquiring data to be cached; determining a caching weight of the data to be cached according to at least two attribute dimensions, wherein one attribute dimension is access time; and if the data to be cached is not hit in the cache space and the cache space does not meet the data elimination condition, storing the data to be cached in the cache space based on the cache weight of the data to be cached. By adopting the technical scheme, the data can be cached based on a plurality of dimensionalities including time, and compared with the existing single dimensionality, the hit rate and the access efficiency of the cache space data are effectively improved.)

一种数据缓存方法、装置、设备及介质

技术领域

本公开涉及缓存技术领域,尤其涉及一种数据缓存方法、装置、设备及介质。

背景技术

随着互联网的发展,网络传输的数据越来越多样化,例如游戏数据,对数据传输的带宽和响应速度要求越来越高,因此考虑采用本地缓存部分数据以减少网络请求。

由于缓存空间有限,当缓存空间装满以后,需要把一些数据淘汰才能更好地提供服务。目前一般是采用最近最少使用(Least Recently Used,LRU)算法实现,但是LRU算法只以时间为维度进行数据缓存和数据淘汰,维度较为单一,数据访问的命中率较低。

发明内容

为了解决上述技术问题或者至少部分地解决上述技术问题,本公开提供了一种数据缓存方法、装置、设备及介质。

本公开实施例提供了一种数据缓存方法,所述方法包括:

获取待缓存数据;

按照至少两个属性维度,确定所述待缓存数据的缓存权值,其中一个所述属性维度为访问时间;

如果所述待缓存数据在缓存空间中未命中且所述缓存空间不满足数据淘汰条件,则基于所述待缓存数据的缓存权值,将所述待缓存数据存储在所述缓存空间。

本公开实施例还提供了一种数据缓存装置,所述装置包括:

数据获取模块,用于获取待缓存数据;

权值确定模块,用于按照至少两个属性维度,确定所述待缓存数据的缓存权值,其中一个所述属性维度为访问时间;

数据存储模块,用于如果所述待缓存数据在缓存空间中未命中且所述缓存空间不满足数据淘汰条件,则基于所述待缓存数据的缓存权值,将所述待缓存数据存储在所述缓存空间。

本公开实施例还提供了一种电子设备,所述电子设备包括:处理器;用于存储所述处理器可执行指令的存储器;所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现如本公开实施例提供的数据缓存方法。

本公开实施例还提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序用于执行如本公开实施例提供的数据缓存方法。

本公开实施例提供的技术方案与现有技术相比具有如下优点:本公开实施例提供的数据缓存方案,获取待缓存数据,按照至少两个属性维度,确定待缓存数据的缓存权值,其中一个属性维度为访问时间,如果待缓存数据在缓存空间中未命中且缓存空间不满足数据淘汰条件,则基于待缓存数据的缓存权值,将待缓存数据存储在缓存空间。采用上述技术方案,数据可以基于包括时间的多个维度进行缓存,相较于现有的单一维度,有效提高了缓存空间数据的命中率和访问效率。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。

为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本公开实施例提供的一种数据缓存方法的流程示意图;

图2为本公开实施例提供的另一种数据缓存方法的流程示意图;

图3为本公开实施例提供的一种数据缓存的示意图;

图4为本公开实施例提供的一种数据缓存装置的结构示意图;

图5为本公开实施例提供的一种电子设备的结构示意图。

具体实施方式

为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。

在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。

现有技术中,LRU算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。通过这种内存替换算法,可以使用有限的内存空间来尽可能好的提高数据的访问效率。但是LRU算法只以时间为维度进行数据缓存和数据淘汰,维度较为单一,数据访问的命中率较低。为了解决上述问题,本公开实施例提供了一种数据缓存方法,以改进LRU算法。

图1为本公开实施例提供的一种数据缓存方法的流程示意图,该方法可以由数据缓存装置执行,其中该装置可以采用软件和/或硬件实现,一般可集成在电子设备中。如图1所示,该方法包括:

步骤101、获取待缓存数据。

其中,待缓存数据可以理解为即将要在缓存空间中进行缓存的数据,本公开实施例中对待缓存数据的具体类型不作限定,例如待缓存数据可以为游戏数据、视频数据和文本数据等。

具体的,当用户进行数据访问时,可以获取待缓存数据。本公开实施例对具体的应用场景不作限定,需要进行数据缓存的场景均可适用,例如可以应用在游戏应用程序中,用于缓存游戏数据来检测两个游戏角色是否可以碰到。

步骤102、按照至少两个属性维度,确定待缓存数据的缓存权值,其中一个属性维度为访问时间。

其中,属性维度是指与待缓存数据相关的数据维度,其中一个属性维度为访问时间,本公开实施例中对除访问时间之外的属性维度不作限定,可以根据实际情况进行设定,例如属性维度可以包括访问次数、访问频率和场景数据等。属性维度可以在获取待缓存数据的同时获取到。缓存权值可以理解为用于表示待缓存数据被访问概率的值,该缓存权值越大,被访问的可能性越大,缓存权值的大小与多个属性维度相关。

本公开实施例中,按照至少两个属性维度,确定待缓存数据的缓存权值,可以包括:按照至少两个属性维度、各属性维度的权重值和缓存权值公式,确定待缓存数据的缓存权值,其中,缓存权值公式为ρ=α1β12β2+···+α2β2,ρ表示待缓存数据的缓存权值,β12,···,βn表示各属性维度,α12,···,αn表示各属性维度的权重值。其中,各属性维度的权重值可以根据实际情况预先设置,对于不同的应用场景,权重值的设置可以不同,例如对于游戏场景,属性维度可以为游戏空间或游戏距离,该属性维度的权重值可以设置为最大。当属性维度为访问时间时,该访问时间具体是指最近一次访问该数据的时刻与初始时刻之间的时间段。

将各属性维度的具体值和各属性维度的权重值带入缓存权值公式中,通过计算,可以确定待缓存数据的缓存权值。

步骤103、如果待缓存数据在缓存空间中未命中且缓存空间不满足数据淘汰条件,则基于待缓存数据的缓存权值,将待缓存数据存储在缓存空间。

其中,缓存空间是指具有限定容量的内存空间,用于对数据进行缓存,该缓存空间中能够存储的数据数量不能超出最大值,否则需要进行数据淘汰。数据淘汰条件可以为缓存空间中的已缓存数据的数量等于数量阈值,其中,数量阈值为缓存空间中能存储的最大数量值。本公开实施例对缓存空间存储数据的方式不作限定,例如缓存空间可以通过双向链表、单向链表或哈希表的方式存储数据。

具体的,如果待缓存数据在缓存空间中不存在,即未命中,并且缓存空间中的已缓存数据的数量不超过数量阈值,则说明该待缓存数据可以直接存储,基于缓存权值将该待缓存数据存储在缓存空间。

本公开实施例中,缓存空间中包括至少两个已缓存数据,获取待缓存数据之前,还可以包括:基于缓存权值由大到小的顺序,对各已缓存数据进行降序排序,并基于排序结果在缓存空间中相应存储位置存储已缓存数据。缓存空间中的已缓存数据是按照缓存权值的大小顺序依次存储的,排序最靠前的为缓存权值最大的已缓存数据,排序最后的为缓存权值最小的已缓存数据。

具体的,基于待缓存数据的缓存权值,将待缓存数据存储在缓存空间,可以包括:依次遍历缓存空间中的各已缓存数据,将缓存权值等于待缓存数据的缓存权值的已缓存数据确定为第一目标数据,或者,将缓存权值小于待缓存数据的缓存权值并且缓存权值与待缓存数据的缓存权值的差值最小的已缓存数据确定为第一目标数据;将待缓存数据存储在缓存空间中的目标位置,其中,目标位置位于第一目标数据的前一个存储位置。

本公开实施例中,基于待缓存数据的缓存权值,可以从缓存空间中头部或尾部开始依次遍历各已缓存数据,将缓存权值相同的已缓存数据的前一个存储位置确定为目标位置,或者,将缓存权值小于本数据且差值最小的已缓存数据的前一个存储位置确定为目标位置,将待缓存数据存储在上述目标位置。可选的,由于缓存空间中已缓存数据是按照缓存权值的大小进行排列的,基于待缓存数据的缓存权值从尾部依次遍历时,还可以将第一个缓存权值大于或等于本数据的已缓存数据的后一个存储位置确定为目标位置,将缓存数据存储在该目标位置。

可以理解的是,当目标位置中已经存储有已缓存数据时,可以通过整体移动目标位置之后或目标位置之前的已缓存数据,将目标位置空闲出来,以存储上述待缓存数据。

本公开实施例提供的数据缓存方案,获取待缓存数据,按照至少两个属性维度,确定待缓存数据的缓存权值,其中一个属性维度为访问时间,如果待缓存数据在缓存空间中未命中且缓存空间不满足数据淘汰条件,则基于待缓存数据的缓存权值,将待缓存数据存储在缓存空间。采用上述技术方案,数据可以基于包括时间的多个维度进行缓存,相较于现有的单一维度,有效提高了缓存空间数据的命中率和访问效率。

在一些实施例中,按照至少两个属性维度,确定待缓存数据的缓存权值之后,还可以包括:如果待缓存数据在缓存空间中未命中且缓存空间满足数据淘汰条件,则删除缓存空间中排序最后所对应存储位置的已缓存数据之后,执行基于待缓存数据的缓存权值,将待缓存数据存储在缓存空间。

由于缓存空间中已缓存数据是按照缓存权值的大小进行排列的,当待缓存数据在缓存空间中不存在且缓存空间中的已缓存数据的数量等于数量阈值时,可以删除排序最后所对应存储位置的已缓存数据,实现数据淘汰,之后再将待缓存数据存储在缓存空间中。本公开实施例中能够从更多维度进行缓存淘汰判断,提升了缓存空间中数据的命中率。

在一些实施例中,按照至少两个属性维度,确定待缓存数据的缓存权值之后,还可以包括:如果待缓存数据在缓存空间中命中,则确定命中的已缓存数据为第二目标数据;将第二目标数据移动到待缓存数据的缓存权值在缓存空间中所对应的存储位置。

如果待缓存数据在缓存空间中存在,由于待缓存数据的缓存权值大于数据相同的已缓存数据的缓存权值,则可以将命中的已缓存数据移动到待缓存数据的缓存权值在缓存空间中所对应的存储位置。本公开实施例中,相较于现有技术中的直接在缓存空间头部***新的数据,基于多维度的缓存权值调整命中的数据的位置,更加准确,有利于数据访问。

图2为本公开实施例提供的另一种数据缓存方法的流程示意图,本实施例在上述实施例的基础上,进一步优化了上述数据缓存方法。如图2所示,该方法包括:

步骤201、获取待缓存数据。

步骤202、按照至少两个属性维度,确定待缓存数据的缓存权值。

其中一个属性维度为访问时间。具体的,按照至少两个属性维度,确定待缓存数据的缓存权值,可以包括:按照至少两个属性维度、各属性维度的权重值和缓存权值公式,确定待缓存数据的缓存权值,其中,缓存权值公式为ρ=α1β12β2+···+α2β2,ρ表示待缓存数据的缓存权值,β12,···,βn表示各属性维度,α12,···,αn表示各属性维度的权重值。

步骤203、判断待缓存数据在缓存空间中是否命中,若是,则执行步骤207;否则,执行步骤204。

步骤204、判断缓存空间是否满足数据淘汰条件,若是,则执行步骤205;否则,执行步骤206。

数据淘汰条件可以为缓存空间中的已缓存数据的数量等于数量阈值,当缓存空间的已缓存数据的数量小于数量阈值时,则确定不满足数据淘汰条件,执行步骤206;当缓存空间的已缓存数据的数量等于数量阈值时,则确定满足数据淘汰条件,执行步骤205。

步骤205、删除缓存空间中排序最后所对应存储位置的已缓存数据。

步骤205之后,执行步骤206。

步骤206、基于待缓存数据的缓存权值,将待缓存数据存储在缓存空间。

步骤207、确定命中的已缓存数据为第二目标数据,将第二目标数据移动到待缓存数据的缓存权值在缓存空间中所对应的存储位置。

示例性的,图3为本公开实施例提供的一种数据缓存的示意图,图中缓存空间中是通过双向链表来存储数据的,“head”表示头部,“tail”表示尾部,该双向链表中可以包括“0”、“1”和“2”三个存储位置,可以存储具体的数据,“key1”、“key2”和“key3”分别表示1、2、0对应的键值,该双向链表中从头部到尾部缓存权值从大到小。例如,当“0”、“1”中包括已缓存数据,待缓存数据的缓存权值大于“1”的已缓存数据的缓存权值,则可以将“1”的已缓存数据移动到“2”中待缓存数据可以存储在“1”中。

本公开实施例提供的数据缓存方案,获取待缓存数据,按照至少两个属性维度,确定待缓存数据的缓存权值,如果待缓存数据在缓存空间中未命中且缓存空间不满足数据淘汰条件,则基于待缓存数据的缓存权值,将待缓存数据存储在缓存空间;如果待缓存数据在缓存空间中未命中且缓存空间满足数据淘汰条件,则删除缓存空间中排序最后所对应存储位置的已缓存数据之后,执行基于待缓存数据的缓存权值,将待缓存数据存储在缓存空间;如果待缓存数据在缓存空间中命中,则确定命中的已缓存数据为第二目标数据;将第二目标数据移动到待缓存数据的缓存权值在缓存空间中所对应的存储位置。采用上述技术方案,数据可以基于包括时间的多个维度进行缓存和淘汰,相较于现有的单一维度,有效提高了缓存空间数据的命中率和访问效率。

图4为本公开实施例提供的一种数据缓存装置的结构示意图,该装置可由软件和/或硬件实现,一般可集成在电子设备中。如图4所示,该装置包括:

数据获取模块301,用于获取待缓存数据;

权值确定模块302,用于按照至少两个属性维度,确定所述待缓存数据的缓存权值,其中一个所述属性维度为访问时间;

数据存储模块303,用于如果所述待缓存数据在缓存空间中未命中且所述缓存空间不满足数据淘汰条件,则基于所述待缓存数据的缓存权值,将所述待缓存数据存储在所述缓存空间。

本公开实施例提供的数据缓存方案,获取待缓存数据,按照至少两个属性维度,确定待缓存数据的缓存权值,其中一个属性维度为访问时间,如果待缓存数据在缓存空间中未命中且缓存空间不满足数据淘汰条件,则基于待缓存数据的缓存权值,将待缓存数据存储在缓存空间。采用上述技术方案,数据可以基于包括时间的多个维度进行缓存,相较于现有的单一维度,有效提高了缓存空间数据的命中率和访问效率。

可选的,所述权值确定模块302具体用于:

按照至少两个属性维度、各所述属性维度的权重值和缓存权值公式,确定所述待缓存数据的缓存权值,其中,所述缓存权值公式为ρ=α1β12β2+···+α2β2,ρ表示所述待缓存数据的缓存权值,β12,···,βn表示各所述属性维度,α12,···,αn表示各所述属性维度的权重值。

可选的,所述缓存空间中包括至少两个已缓存数据,所述装置还包括已缓存模块,具体用于:获取待缓存数据之前,

基于缓存权值由大到小的顺序,对各所述已缓存数据进行降序排序,并基于排序结果在所述缓存空间中相应存储位置存储所述已缓存数据。

可选的,所述数据淘汰条件为所述缓存空间中的所述已缓存数据的数量等于数量阈值。

可选的,所述数据存储模块303具体用于:

依次遍历所述缓存空间中的各所述已缓存数据,将缓存权值等于所述待缓存数据的缓存权值的已缓存数据确定为第一目标数据,或者,将缓存权值小于所述待缓存数据的缓存权值并且缓存权值与所述待缓存数据的缓存权值的差值最小的已缓存数据确定为第一目标数据;

将所述待缓存数据存储在所述缓存空间中的目标位置,其中,所述目标位置位于所述第一目标数据的前一个存储位置。

可选的,所述装置还包括数据淘汰模块,具体用于:按照至少两个属性维度,确定所述待缓存数据的缓存权值之后,

如果所述待缓存数据在所述缓存空间中未命中且所述缓存空间满足数据淘汰条件,则删除所述缓存空间中排序最后所对应存储位置的已缓存数据之后,执行所述基于所述待缓存数据的缓存权值,将所述待缓存数据存储在所述缓存空间。

可选的,所述装置还包括数据移动模块,具体用于:按照至少两个属性维度,确定所述待缓存数据的缓存权值之后,

如果所述待缓存数据在所述缓存空间中命中,则确定命中的已缓存数据为第二目标数据;

将所述第二目标数据移动到所述待缓存数据的缓存权值在所述缓存空间中所对应的存储位置。

本公开实施例所提供的数据缓存装置可执行本发明任意实施例所提供的数据缓存方法,具备执行方法相应的功能模块和有益效果。

图5为本公开实施例提供的一种电子设备的结构示意图。如图5所示,电子设备400包括一个或多个处理器401和存储器402。

处理器401可以是中央处理单元(CPU)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备400中的其他组件以执行期望的功能。

存储器402可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器401可以运行所述程序指令,以实现上文所述的本公开的实施例的数据缓存方法以及/或者其他期望的功能。在所述计算机可读存储介质中还可以存储诸如输入信号、信号分量、噪声分量等各种内容。

在一个示例中,电子设备400还可以包括:输入装置403和输出装置404,这些组件通过总线系统和/或其他形式的连接机构(未示出)互连。

此外,该输入装置403还可以包括例如键盘、鼠标等等。

该输出装置404可以向外部输出各种信息,包括确定出的距离信息、方向信息等。该输出装置404可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等等。

当然,为了简化,图5中仅示出了该电子设备400中与本公开有关的组件中的一些,省略了诸如总线、输入/输出接口等等的组件。除此之外,根据具体应用情况,电子设备400还可以包括任何其他适当的组件。

除了上述方法和设备以外,本公开的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本公开实施例所提供的数据缓存方法。

所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。

此外,本公开的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本公开实施例所提供的数据缓存方法。

所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。

需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

14页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种基于电子信息的分布式数据保密处理系统及装置

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类