CN109492020A - 一种数据缓存方法、装置、电子设备及存储介质 - Google Patents
一种数据缓存方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN109492020A CN109492020A CN201811419312.0A CN201811419312A CN109492020A CN 109492020 A CN109492020 A CN 109492020A CN 201811419312 A CN201811419312 A CN 201811419312A CN 109492020 A CN109492020 A CN 109492020A
- Authority
- CN
- China
- Prior art keywords
- cache unit
- key
- unit layer
- value pair
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Abstract
本申请提供一种数据缓存方法、装置、电子设备及存储介质,用于解决现有技术中在数据失效的时间段内,有大量的数据存入容易导致数据量级别的增长的问题。该数据缓存方法,应用于电子设备,电子设备包括缓存库,缓存库包括多个缓存单元层,多个缓存单元层中的每个缓存单元层均对应有不同的优先级,包括:若缓存库满足预设条件,将最低优先级对应的缓存单元层连同该缓存单元层中存储的键值对一同删除;将多个缓存单元层中的每个缓存单元层的优先级调低一级;新建一个缓存单元层,将该缓存单元层的优先级设为最高优先级。
Description
技术领域
本申请涉及数据处理的技术领域,尤其涉及一种数据缓存方法、装置、电子设备及存储介质。
背景技术
目前在使用缓存的开发中,很多程序经常会在各模块内使用缓存来避免重复进行资源消耗大的工作,同时也存在着许多专门的缓存数据库集中处理缓存数据。从所有缓存数据中选择被访问时间最久远的数据进行驱逐,这种策略考虑到了数据本身的被访问时间这一属性,能够避免长期用不到的数据在缓存中驻留。如果在短时间内或者在数据失效的时间段内,有大量的数据存入,那么就容易导致缓存所占的空间过快增长,甚至达到一个数据量级别的增长的问题。因此,现有技术中存在着在数据失效的时间段内,有大量的数据存入容易导致数据量级别的增长的问题。
发明内容
有鉴于此,本申请提供一种数据缓存方法、装置、电子设备及存储介质,用于解决现有技术中在数据失效的时间段内,有大量的数据存入容易导致数据量级别的增长的问题。
本申请实施例提供了的一种数据缓存方法,应用于电子设备,所述电子设备包括缓存库,所述缓存库包括多个缓存单元层,所述多个缓存单元层中的每个缓存单元层均对应有不同的优先级,包括:若缓存库满足预设条件,将最低优先级对应的缓存单元层连同该缓存单元层中存储的键值对一同删除;将多个缓存单元层中的每个缓存单元层的优先级调低一级;新建一缓存单元层,将该缓存单元层的优先级设为最高优先级。
可选地,在本申请实施例中,所述缓存库满足预设条件,包括:
当所述缓存库的写入操作的次数大于预设次数,所述写入操作包括:
增加操作或/和修改操作;或当所述缓存库的配置时钟达到预设时间,所述配置时钟在达到预设时间后被重置。
可选地,在本申请实施例中,在所述将最低优先级对应的缓存单元层连同该缓存单元层中存储的键值对一同删除之前,还包括:接收终端设备发送查询操作,所述查询操作包括待查询的键值对的标识符;判断所述标识符对应的键值对是否存在于所述缓存库中的多个缓存单元层中;若是,则将所述键值对存入最高优先级对应的缓存单元层中,并将原先存储该键值对的缓存单元层中的所述键值对删除。
可选地,在本申请实施例中,在所述将最低优先级对应的缓存单元层连同该缓存单元层中存储的键值对一同删除之前,还包括:接收终端设备发送增加操作,所述增加操作包括待增加的键值对;将所述待增加的键值对存入最高优先级对应的缓存单元层中。
可选地,在本申请实施例中,所述接收终端设备发送增加操作之后,所述将所述待增加的键值对存入最高优先级对应的缓存单元层中之前,所述方法还包括:确定所述缓存库中的缓存单元层未包括所述待增加的键值对。
可选地,在本申请实施例中,在所述将最低优先级对应的缓存单元层连同该缓存单元层中存储的键值对一同删除之前,还包括:接收终端设备发送修改操作,所述修改操作包括待修改的键值对的标识符和数据值;判断所述标识符对应的键值对是否存在于所述缓存库中的多个缓存单元层中;若是,则将所述待修改的键值对存入最高优先级对应的缓存单元层中,并将原先存储该键值对的缓存单元层中的所述键值对删除。
可选地,在本申请实施例中,在所述将最低优先级对应的缓存单元层连同该缓存单元层中存储的键值对一同删除之前,还包括:接收终端设备发送删除操作,所述删除操作包括待删除的键值对的标识符;判断所述标识符对应的键值对是否存在于所述缓存库中的多个缓存单元层中;若是,则将原先存储该键值对的缓存单元层中的所述键值对删除。
本申请实施例还提供了一种数据缓存装置,应用于电子设备,包括:单元层删除模块,用于将最低优先级对应的缓存单元层连同该缓存单元层中存储的数据一同删除;单元层调级模块,用于将多个缓存单元层中的每个缓存单元层的优先级调低一级;单元层新建模块,用于新建一缓存单元层,将该缓存单元层的优先级设为最高优先级。
本申请实施例还提供了一种电子设备,包括:处理器、存储器和通信接口,所述存储器存储有所述处理器可执行的机器可读指令,所述通信接口用于与外部设备进行通信,所述机器可读指令被所述处理器执行时执行如上所述的方法。
本申请实施例还提供了一种存储介质,该存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如上所述的方法。
本申请提供一种数据缓存方法、装置、电子设备及存储介质,通过当缓存库满足预设条件时,将最低优先级对应的缓存单元层连同该缓存单元层中存储的键值对一同删除,同时将多个缓存单元层中的每个缓存单元层的优先级调低一级;新建一缓存单元层,将该缓存单元层的优先级设为最高优先级,该新建的缓存单元层用于存放新增加的数据。通过这种多个单元层的管理方式来有效的管理存储的数据,从而有效地解决了现有技术中在数据失效的时间段内,有大量的数据存入容易导致数据量级别的增长的问题。
为使本申请的上述目的和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚的说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本申请实施例提供的电子设备和终端设备的结构示意图;
图2示出了本申请实施例提供的数据缓存方法的流程示意图;
图3示出了本申请实施例提供的数据缓存方法的处理查询操作的流程示意图;
图4示出了本申请实施例提供的数据缓存方法的处理增加操作的流程示意图;
图5示出了本申请实施例提供的数据缓存方法的处理修改操作的流程示意图;
图6示出了本申请实施例提供的数据缓存方法的处理删除操作的流程示意图;
图7示出了本申请实施例提供的数据缓存装置结构示意图。
图标:100-电子设备;101-第一处理器;102-第一存储器;103-第一通信接口;200-终端设备;201-第二处理器;202-第二存储器;203-第二通信接口;300-数据缓存装置;310-单元层删除模块;320-单元层调级模块;330-单元层新建模块;
具体实施方式
本申请实施例提供一种数据缓存方法、装置、电子设备及存储介质,用于解决现有技术中在数据失效的时间段内,有大量的数据存入容易导致数据量级别的增长的问题。其中,应用于电子设备的方法和装置是基于同一创造构思的,由于方法及相应的装置和设备解决问题的原理相似,因此方法及相应的装置和设备的实施可以相互参见,重复之处不再赘述。
以下将对本申请实施例中的部分用语进行解释说明,以便于本领域技术人员理解。
缓存数据库:暂时性存储数据以备稍后取用的数据库,通常为使用内存来存储数据标识符(key)和数据值(value)的键值对(key-value)数据库,根据语境可以指硬件、软件或逻辑模块。
缓存:作为名词使用时指缓存数据库或缓存数据库中的数据,作为动词使用时可以指将数据存入缓存数据库的过程。
缓存数据:已保存在缓存或要保存在缓存中的数据,数据包含了数据标识符(key和数据值(value),其中数据标识符为在特定上下文中唯一标识出该数据的特征值,数据值为该数据的主体内容,缓存数据库中会以数据标识符保存数据值。
缓存单元层:一个可以保存缓存数据的基本单元,可以将数据值以数据标识符存到该缓存单元层中,或按照数据标符从中取出对应的数据值,一般缓存单元层在编程语言中可以用关联数组(associativearray)、字典(dict)或映射(mapping)等形式实现;本申请实施例中简称单元层。
缓存单元列表:一个存有若干缓存单元层的有序列表,有序列表中的第一项为顶层,最后一项为底层;本申请实施例中简称单元列表。
层级缓存库:以多层级存有缓存数据的缓存数据库;每个层级缓存库包含一个缓存单元列表,在特定上下文中每一个层级缓存库中都有一个唯一标识出自身的库标识符(或称库名),层级缓存库的属性可包含衰退周期和最大层数;本申请实施例中简称缓存库。
衰退:对层级缓存库来说,经过一个衰退周期对应的时间后,该层级缓存库的缓存单元列表中的会添加一个新的顶层,一个空的缓存单元层,原来各层单元层(及其中的数据)会转为下一层,原来最底层的单元层(及其中数据)会被丢弃。
缓存协调器:在组合使用多种层级缓存的情况下,用来居中协调缓存的存取过程的统筹模块;缓存协调器可下属多个层级缓存库,并包含一个缓存库索引(简称库索引),该库索引记录具特定数据标识符的数据可能存在于哪个被该协调器管辖的层级缓存库中;本申请实施例中简称协调器。
缓存的命中率:使用缓存的外部模块能在缓存中取到所需数据的概率。
另外,需要理解的是,在本申请实施例的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或者暗示相对重要性,也不能理解为指示或者暗示顺序。
下面结合附图,对本申请实施例的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
请参见图1,图1示出了本申请实施例提供的电子设备和终端设备的结构示意图。本申请实施例提供了的一种电子设备100,包括:第一处理器101、第一存储器102和第一通信接口103,第一存储器102存储有第一处理器101可执行的机器可读指令,第一通信接口103用于与外部设备进行通信,机器可读指令被第一处理器101执行时执行如上方法。
其中,本申请实施例还提供了的一种存储介质,该存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如上的方法。
本申请实施例还提供了的一种终端设备200,包括:第二处理器201、第二存储器202和第二通信接口203,第二存储器202存储有第二处理器201可执行的机器可读指令,第二通信接口203用于与外部设备进行通信,机器可读指令被第二处理器201执行时执行如上方法。
在具体的实施过程中,对下面描述的方法的相关计算可以用图形处理器(Graphics Processing Unit,GPU)进行加速,因此,该电子设备还可以包括图形处理器。此外,在使用分布式计算框架时需要使用通信接口,该电子设备还可以包括通讯与网络扩展卡、光纤卡或者多串口通信卡等部件,在此不再赘述。
本领域技术人员可以理解,图1中示出的电子设备的结构并不构成对该设备的限定,本申请实施例提供的设备可以包括比图示更多或者更少的部件,或者不同的部件布置。
第一实施例
请参见图2,图2示出了本申请实施例提供的数据缓存方法的流程示意图。本申请实施例提供了的一种数据缓存方法,应用于电子设备,电子设备包括缓存库,缓存库包括多个缓存单元层,多个缓存单元层中的每个缓存单元层均对应有不同的优先级,该数据缓存方法包括:
步骤S110:若缓存库满足预设条件,将最低优先级对应的缓存单元层连同该缓存单元层中存储的键值对一同删除。
其中,在本申请实施例中,缓存库的写入操作的次数大于预设次数,写入操作包括:增加操作或/和修改操作;或者是,当缓存库的配置时钟达到预设时间,配置时钟在达到预设时间后被缓存库重置。其中,缓存库的预设操作的次数大于预设次数,例如包括:缓存库的增加操作的次数大于预设次数;或/和,缓存库的修改操作的次数大于预设次数。
需要说明的是,多个缓存单元层中的每个缓存单元层均对应有不同的优先级,其优先级具体的实现方式例如使用列表的方式,例如有两个缓存单元层,列表里有两个指针,分别指向三个缓存单元层,列表的头部指针指向的缓存单元层为最高优先级对应的缓存单元层,列表的中部指针指向的缓存单元层为中间优先级对应的缓存单元层,列表的尾部指针指向的缓存单元层为最低优先级对应的缓存单元层。当多个缓存单元层发生衰退(即执行步骤S110至S130)时,列表的尾部指针指向缓存单元层为中间优先级对应的缓存单元层,此时缓存单元层为最低优先级对应的缓存单元层被丢弃(即没有任何指针指向它),等到内存垃圾收集器触发收集操作时,会将该最低优先级对应的缓存单元层收回用于重新分配内存,然后列表的中部指针指向缓存单元层为最高优先级对应的缓存单元层,最后新建一个缓存单元层,列表的头部指针指向新建的这个缓存单元层。当然优先级还有其他的实现方式,因此这里的优先级实现方式和实现内容不应理解为对本申请实施例的限制。
步骤S120:将多个缓存单元层中的每个缓存单元层的优先级调低一级。
其中,本申请实施例中的缓存库的核心数据结构,层级缓存库,包含一个缓存单元列表,缓存单元列表是一个有序列表中,该层级缓存库中的各层级缓存单元层有序地排布在这个缓存单元列表中,单个缓存单元层的数据结构类似关联数组(associative array)或字典(dict)或映射(mapping),将缓存数据的数据值以数据标识符保存。因为缓存单元列表是有序的,所以层级缓存库所属缓存单元列表中的单元层(以下简称缓存库的单元层)可以区分为第一层、第二层……最底层(简称缓存库的第一层(最顶层)、第二层……最后一层(最低层))。缓存库的第一层会存放最近存取的数据。每个层级缓存库具有衰退周期和最大层数两个属性,衰退周期为每个缓存库的单元层由当前层级变到下个层级(如第一层到第二层)所需的时间抽象(可以为自然时间,也可以为添加缓存数据的次数,或自然时间与添加缓存数据次数两者的条件组合),最大层数是层级缓存库允许其缓存单元列表存在缓存单元层的最大长度。衰退发生时,缓存单元列表中会添加一个新的顶层单元层,原有的各单元层的层级下降一层,原来的底层单元层会被丢弃。
步骤S130:新建一缓存单元层,将该缓存单元层的优先级设为最高优先级。
需要说明的是,在本申请实施例中,缓存库中的操作包括:查询操作、增加操作、修改操作和删除操作,其中,查询操作、增加操作、修改操作和删除操作中,在同一时刻内,本申请实施例可以只进行一种操作,当然在具体的实施过程中也可以同时进行两种操作,例如修改操作和查询操作,因此,对缓存库的同时进行的操作种类和数量不应理解为对本申请实施例的限制。下面将对这四种操作的情况进行分别说明:
查询操作请参见图3,图3示出了本申请实施例提供的数据缓存方法的处理查询操作的流程示意图。可选地,在本申请实施例中,在将最低优先级对应的缓存单元层连同该缓存单元层中存储的键值对一同删除之前,即在步骤S110之前,还包括:
步骤S101:接收终端设备发送查询操作,查询操作包括待查询的键值对的标识符。
其中,每当尝试使用数据标识符从层级缓存库中取缓存数据时,缓存数据库会依次尝试从缓存单元列表里的各层单元层中以数据标识符取数据值,在取到数据值的情况下,还会将该数据从原来位置移除,重新放到缓存库的最顶层,在第一层单元层中以数据标识符储存数据值。
步骤S102:判断标识符对应的键值对是否存在于缓存库中的多个缓存单元层中。
其中,判断标识符对应的键值对是否存在于缓存库中的多个缓存单元层中,可以使用哈希列表存储标识符和标识符对应的键值对的存储位置,以便快速的查找标识符对应的键值对在缓存库中的多个缓存单元层的位置。当然,也可以用类似于树的结构来存储和查找,例如二叉树、平衡树等,因此,这里的判断标识符对应的键值对是否存在于缓存库中的多个缓存单元层中具体的方式和存储结构不应理解为对本申请实施例的限制。
步骤S103:若是,则将键值对存入最高优先级对应的缓存单元层中,并将原先存储该键值对的缓存单元层中的键值对删除。
其中,在将键值对存入最高优先级对应的缓存单元层中,并将原先存储该键值对的缓存单元层中的键值对删除,这个步骤之后,还需要将该键值对作为操作结果发送给终端设备。
增加操作请参见图4,图4示出了本申请实施例提供的数据缓存方法的处理增加操作的流程示意图。可选地,在本申请实施例中,在将最低优先级对应的缓存单元层连同该缓存单元层中存储的键值对一同删除之前,即在步骤S110之前,还包括:
步骤S201:接收终端设备发送增加操作,增加操作包括待增加的键值对。
其中,每当往层级缓存库中存储新的数据时,缓存库会先根据该数据标示符检查其是否已存在于缓存库中,若存在,则将该旧数据从相应位置中删除,然后将该新的数据添加到缓存库的最顶层,在第一层单元层中以数据标识符储存数据值。当然,也可以不检查其是否已存在于缓存库中,因此,增加操作时是否检查其是否已存在于缓存库中不应理解为对本申请实施例的限制。
步骤S202:确定缓存库中的缓存单元层未包括待增加的键值对。
需要说明的是,在本申请实施例中,接收终端设备发送增加操作之后,将待增加的键值对存入最高优先级对应的缓存单元层中之前,方法可以包括:确定缓存库中的缓存单元层未包括待增加的键值对。当然,也可以不包括该步骤,因此,在缓存库执行增加操作时是否包括:确定缓存库中的缓存单元层未包括待增加的键值对,不应理解为对本申请实施例的限制。
当然,也可以单独使用一个层级缓存库进行缓存存取,也可以将多个库名不同的层级缓存库组合使用,此时,每个层级缓存库可能会有不同的衰退周期和最大层数,可以按需存放不同类型的数据。因此,数据进行缓存存取的具体存储结构和多个库名不同的层级缓存库组合组合方式,以及数据类型和层级缓存库类型不应理解为对本申请实施例的限制。
步骤S203:将待增加的键值对存入最高优先级对应的缓存单元层中。
其中,在将待增加的键值对存入最高优先级对应的缓存单元层中,这个步骤之后,还需要将该键值对的存储结果作为操作结果发送给终端设备。
此外,这些共存的多个层级缓存库由一个总的缓存协调器统筹处理,缓存协调器可下属多个层级缓存库,并包含一个缓存库索引。
在存数据时,将输入数据的数据标识符和数据值传给缓存协调器,缓存协调器会根据该输入数据的特征将数据存入对应的层级缓存库中,该输入数据的数据标识符和该缓存库的库标识符会被提取出并记录到自身的库索引中;
在取数据时,将要取的数据值对应的标识符传给缓存协调器,缓存协调器会先通过库索引尝试找到可能存在该数据标识符对应数据的层级缓存库,然后尝试使用该层级缓存库自身的取数据逻辑获取数据;如能获取到则正常返回该数据,若无法获取到,则说明该数据已不存在于缓存库中,缓存协调器会将该数据标识符的条目从库索引中删除。
修改操作请参见图5,图5示出了本申请实施例提供的数据缓存方法的处理修改操作的流程示意图。可选地,在本申请实施例中,在将最低优先级对应的缓存单元层连同该缓存单元层中存储的键值对一同删除之前,即在步骤S110之前,还包括:
步骤S301:接收终端设备发送修改操作,修改操作包括待修改的键值对的标识符和数据值。
步骤S302:判断标识符对应的键值对是否存在于缓存库中的多个缓存单元层中。
其中,判断标识符对应的键值对是否存在于缓存库中的多个缓存单元层中,可以使用哈希列表存储标识符和标识符对应的键值对的存储位置,以便快速的查找标识符对应的键值对在缓存库中的多个缓存单元层的位置。当然,也可以用类似于树的结构来存储和查找,例如二叉树、平衡树等,因此,这里的判断标识符对应的键值对是否存在于缓存库中的多个缓存单元层中具体的方式和存储结构不应理解为对本申请实施例的限制。
步骤S303:若是,则将待修改的键值对存入最高优先级对应的缓存单元层中,并将原先存储该键值对的缓存单元层中的键值对删除。
需要说明的是,在将待修改的键值对存入最高优先级对应的缓存单元层,这个步骤之后,还需要将该待修改的键值对的存储结果作为操作结果发送给终端设备。
删除操作请参见图6,图6示出了本申请实施例提供的数据缓存方法的处理删除操作的流程示意图。可选地,在本申请实施例中,在将最低优先级对应的缓存单元层连同该缓存单元层中存储的键值对一同删除之前,即在步骤S110之前,还包括:
步骤S401:接收终端设备发送删除操作,删除操作包括待删除的键值对的标识符。
其中,当然缓存库可以根据自身的应用场景需要,可以设置删除操作,也可以不设置删除操作,不设置删除操作的情况下,可以等待该缓存库的衰退机制触发数据或者键值对的删除。因此,是否设置删除操作不应理解为对本申请实施例的限制。
步骤S402:判断标识符对应的键值对是否存在于缓存库中的多个缓存单元层中。
其中,判断标识符对应的键值对是否存在于缓存库中的多个缓存单元层中,可以使用哈希列表存储标识符和标识符对应的键值对的存储位置,以便快速的查找标识符对应的键值对在缓存库中的多个缓存单元层的位置。当然,也可以用类似于树的结构来存储和查找,例如二叉树、平衡树等,因此,这里的判断标识符对应的键值对是否存在于缓存库中的多个缓存单元层中具体的方式和存储结构不应理解为对本申请实施例的限制。
步骤S403:若是,则将原先存储该键值对的缓存单元层中的键值对删除。
需要说明的是,在将原先存储该键值对的缓存单元层中的键值对删除之后,还需要将该键值对的删除结果作为操作结果发送给终端设备。
为了便于理解,下面列举两个在具体实施过程中的实施方式,应用层级缓存库的缓存数据存取实例,其具体实施过程中的实施方式如下:
第一种实施方式,单独使用一个层级缓存库进行缓存数据存取。
1)假设,现有一缓存库,库名为“tier_cache”,其衰退周期为缓存数据添加两次(每添加两次缓存数据则发生一次衰退),最大层数为两层;初始状态为两层空的单元层:[{},{}]
2)外部传入数据,数据标示符为“a”,数据值为“aaa”,缓存库在第一层单元层中以“a”存入“aaa”,当前状态:[{“a”:“aaa”},{}]
3)外部传入数据,数据标示符为“b”,数据值为“bbb”,缓存库在第一层单元层中以“b”存入“bbb”,当前状态:[{“a”:“aaa”,“b”:“bbb”},{}]
4)缓存数据添加次数达到两次,发生衰退,缓存库的缓存单元列表新增一个空的第一层,原来第一层的数据变为第二层,原来的第二层空单元层被丢弃,当前状态:[{},{“a”:“aaa”,“b”:“bbb”}]
5)外部传入数据,数据标示符为“c”,数据值为“c”,缓存库在第一层单元层中以“c”存入“ccc”,当前状态:[{“c”:“ccc”},{“a”:“aaa”,“b”:“bbb”}]
6)外部使用数据标示符“a”查询缓存数据,缓存库首先检查第一层单元层{“c”:“ccc”},未能匹配到“a”,继续检查第二层单元层{“a”:“aaa”,“b”:“bbb”},成功匹配到“a”,于是从第二层单元层中取出“a”:“aaa”,将其从原所在的第二层删除,重新放入第一层,并将取得的数据值“aaa”返回给外部,目前状态:[{“a”:“aaa”,“c”:“ccc”},{“b”:“bbb”}]
7)外部传入数据,数据标示符为“c”,数据值为“ccc2”,缓存库找到在第一层单元层已存在“c”:“ccc”,将其从原来的位置中删除,然后在第一层单元层中以“c”存入新的值“ccc2”,当前状态:[{“a”:“aaa”,“c”:“ccc2”},{“b”:“bbb”}]
8)缓存数据添加次数达到两次,发生衰退,缓存库的缓存单元列表新增一个空的第一层,原来第一层的数据变为第二层,原来第二层的数据{“b”:“bbb”}被丢弃,当前状态:[{},{“a”:“aaa”,“c”:“ccc2”}]
9)外部使用数据标示符“b”查询缓存数据,但由于经过两个衰退周期后,该数据标示符对应的数据已经被丢弃,于是缓存库查找不到对应的缓存数据并通知外部该数据不存在于缓存中,状态保持不变:[{“a”:“aaa”,“c”:“ccc”},{“b”:“bbb”}]
第二种实施方式,一个缓存协调器管理两个层级缓存库进行缓存数据存取。
假设,有一个缓存协调器,其下属两个层级缓存库“tier_cache1”和“tier_cahce2”,其中“tier_cache1”负责处理html网页类型的缓存数据,其衰退周期为30分钟,最大层数为10层,而“tier_cache2”负责处理图形等资源类型的缓存数据,其衰退周期为3小时,最大层数为2层,初始状态两个缓存库都为空;该协调器另有一个缓存库索引,初始也为空;
1)外部传入一个图像类型数据,数据标示符为“http://example.com/a.jpg”,数据值为表示这张图像的数据,缓存协调器首先尝试从其缓存库索引中使用该数据标示符“http://example.com/a.jpg”查找,查无对应,于是判断该数据不存在于缓存库中,进入存储缓存数据的步骤:首先根据其数据类型为图像判断出应该将其存入缓存库“tier_cache2”,于是将其数据标示符和数据值直接传递给缓存库“tier_cache2”令其自行存储缓存数据,并在自身的缓存库索引中记录数据标示符“http://example.com/a.jpg”对应的数据存在于缓存库“tier_cache2”中;
2)过了一分钟后,外部传入一个html网页类型数据,数据标示符为“http://example.com/index.html”,数据值为该网页的源代码内容,缓存协调器首先尝试从其缓存库索引中使用该数据标示符“http://example.com/index.html”查找,查无对应,于是判断该数据不存在于缓存库中,进入存储缓存数据的步骤:首先根据其数据类型为html网页判断出应该将其存入缓存库“tier_cache1”,于是将其数据标示符和数据值直接传递给缓存库“tier_cache1”令其自行存储缓存数据,并在自身的缓存库索引中记录数据标示符“http://example.com/index.html”对应的数据存在于缓存库“tier_cache1”中;;
3)过了十分钟后,外部使用数据标示符“http://example.com/index.html”查询缓存数据,缓存协调器首先尝试从其缓存库索引中使用该数据标示符“http://example.com/index.html”查找,查到该数据标示符对应的数据存在于缓存库“tier_cache1”,于是使用该标识符在缓存库“tier_cache1”中查询缓存数据,缓存库“tier_cache1”自行查询得到该标识符对应的数据值(网页源代码)返回给缓存协调器,缓存协调器再将该数据值返回给外部;
4)过了六小时之后,外部使用数据标示符“http://example.com/a.jpg”查询缓存数据,缓存协调器首先尝试从其缓存库索引中使用该数据标示符“http://example.com/a.jpg”查找,查到该数据标示符对应的数据存在于缓存库“tier_cache2”,于是使用该标识符在缓存库“tier_cache2”中查询缓存数据,然而,由于已经过了六个小时,“http://example.com/a.jpg”对应的数据在两个衰退周期后已经在缓存库“tier_cache2”中被丢弃,缓存库“tier_cache2”自行查询后通知缓存协调器对应数据已不存在于该缓存库中,于是缓存协调器从缓存库索引中将该数据标示符“http://example.com/a.jpg”对应的条目移除并通知外部该数据并不存在于缓存中。
第二实施例
请参见图7,图7示出了本申请实施例提供的数据缓存装置结构示意图。本申请实施例提供了的一种数据缓存装置300,应用于电子设备,电子设备包括缓存库,该缓存库包括多个缓存单元层,多个缓存单元层中的每个缓存单元层均对应有不同的优先级,该数据缓存装置300包括:
单元层删除模块310,用于将最低优先级对应的缓存单元层连同该缓存单元层中存储的数据一同删除。
单元层调级模块320,用于将多个缓存单元层中的每个缓存单元层的优先级调低一级。
单元层新建模块330,用于新建一缓存单元层,将该缓存单元层的优先级设为最高优先级。
以上的本申请实施例仅为优选实施例而已,并不限制于本申请实施例,对于本领域的技术人员来说,本申请实施例可以有各种更改和变化。凡在本申请实施例的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在保护范围之内。
Claims (10)
1.一种数据缓存方法,其特征在于,应用于电子设备,所述电子设备包括缓存库,所述缓存库包括多个缓存单元层,所述多个缓存单元层中的每个缓存单元层均对应有不同的优先级,包括:
若缓存库满足预设条件,将最低优先级对应的缓存单元层连同该缓存单元层中存储的键值对一同删除;
将多个缓存单元层中的每个缓存单元层的优先级调低一级;
新建一缓存单元层,将该缓存单元层的优先级设为最高优先级。
2.如权利要求1所述的方法,其特征在于,所述缓存库满足预设条件,包括:
当所述缓存库的写入操作的次数大于预设次数,所述写入操作包括:增加操作或/和修改操作;或
当所述缓存库的配置时钟达到预设时间,所述配置时钟在达到预设时间后被重置。
3.如权利要求1所述的方法,其特征在于,在所述将最低优先级对应的缓存单元层连同该缓存单元层中存储的键值对一同删除之前,还包括:
接收终端设备发送查询操作,所述查询操作包括待查询的键值对的标识符;
判断所述标识符对应的键值对是否存在于所述缓存库中的多个缓存单元层中;
若是,则将所述键值对存入最高优先级对应的缓存单元层中,并将原先存储该键值对的缓存单元层中的所述键值对删除。
4.如权利要求1所述的方法,其特征在于,在所述将最低优先级对应的缓存单元层连同该缓存单元层中存储的键值对一同删除之前,还包括:
接收终端设备发送增加操作,所述增加操作包括待增加的键值对;
将所述待增加的键值对存入最高优先级对应的缓存单元层中。
5.如权利要求4所述的方法,其特征在于,所述接收终端设备发送增加操作之后,所述将所述待增加的键值对存入最高优先级对应的缓存单元层中之前,所述方法还包括:
确定所述缓存库中的缓存单元层未包括所述待增加的键值对。
6.如权利要求1所述的方法,其特征在于,在所述将最低优先级对应的缓存单元层连同该缓存单元层中存储的键值对一同删除之前,还包括:
接收终端设备发送修改操作,所述修改操作包括待修改的键值对的标识符和数据值;
判断所述标识符对应的键值对是否存在于所述缓存库中的多个缓存单元层中;
若是,则将所述待修改的键值对存入最高优先级对应的缓存单元层中,并将原先存储该键值对的缓存单元层中的所述键值对删除。
7.如权利要求1所述的方法,其特征在于,在所述将最低优先级对应的缓存单元层连同该缓存单元层中存储的键值对一同删除之前,还包括:
接收终端设备发送删除操作,所述删除操作包括待删除的键值对的标识符;
判断所述标识符对应的键值对是否存在于所述缓存库中的多个缓存单元层中;
若是,则将原先存储该键值对的缓存单元层中的所述键值对删除。
8.一种数据缓存装置,其特征在于,应用于电子设备,所述电子设备包括缓存库,所述缓存库包括多个缓存单元层,所述多个缓存单元层中的每个缓存单元层均对应有不同的优先级,包括:
单元层删除模块,用于将最低优先级对应的缓存单元层连同该缓存单元层中存储的键值对一同删除;
单元层调级模块,用于将多个缓存单元层中的每个缓存单元层的优先级调低一级;
单元层新建模块,用于新建一缓存单元层,将该缓存单元层的优先级设为最高优先级。
9.一种电子设备,其特征在于,包括:处理器、存储器和通信接口,所述存储器存储有所述处理器可执行的机器可读指令,所述通信接口用于与外部设备进行通信,所述机器可读指令被所述处理器执行时执行如权利要求1至7任一项所述的方法。
10.一种存储介质,其特征在于,该存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如权利要求1至7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811419312.0A CN109492020A (zh) | 2018-11-26 | 2018-11-26 | 一种数据缓存方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811419312.0A CN109492020A (zh) | 2018-11-26 | 2018-11-26 | 一种数据缓存方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109492020A true CN109492020A (zh) | 2019-03-19 |
Family
ID=65696808
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811419312.0A Pending CN109492020A (zh) | 2018-11-26 | 2018-11-26 | 一种数据缓存方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109492020A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112667847A (zh) * | 2019-10-16 | 2021-04-16 | 北京奇艺世纪科技有限公司 | 数据缓存方法、数据缓存装置和电子设备 |
CN112732751A (zh) * | 2020-12-30 | 2021-04-30 | 北京懿医云科技有限公司 | 一种医学数据处理方法、装置、存储介质及设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105099961A (zh) * | 2014-05-12 | 2015-11-25 | 中兴通讯股份有限公司 | 一种快速同步介质访问控制地址表的方法和装置 |
CN105426321A (zh) * | 2015-11-13 | 2016-03-23 | 上海交通大学 | 采用远程位置信息的rdma友好缓存方法 |
CN105630967A (zh) * | 2015-12-23 | 2016-06-01 | 广东威创视讯科技股份有限公司 | 一种基于gis显示数据的缓存方法及装置 |
US20170192892A1 (en) * | 2016-01-06 | 2017-07-06 | Netapp, Inc. | High performance and memory efficient metadata caching |
CN107368437A (zh) * | 2017-07-24 | 2017-11-21 | 郑州云海信息技术有限公司 | 一种末级缓存管理方法及系统 |
CN108875036A (zh) * | 2018-06-26 | 2018-11-23 | 北京永安信通科技股份有限公司 | 页面数据缓存方法、装置、页面缓存数据结构和电子设备 |
-
2018
- 2018-11-26 CN CN201811419312.0A patent/CN109492020A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105099961A (zh) * | 2014-05-12 | 2015-11-25 | 中兴通讯股份有限公司 | 一种快速同步介质访问控制地址表的方法和装置 |
CN105426321A (zh) * | 2015-11-13 | 2016-03-23 | 上海交通大学 | 采用远程位置信息的rdma友好缓存方法 |
CN105630967A (zh) * | 2015-12-23 | 2016-06-01 | 广东威创视讯科技股份有限公司 | 一种基于gis显示数据的缓存方法及装置 |
US20170192892A1 (en) * | 2016-01-06 | 2017-07-06 | Netapp, Inc. | High performance and memory efficient metadata caching |
CN107368437A (zh) * | 2017-07-24 | 2017-11-21 | 郑州云海信息技术有限公司 | 一种末级缓存管理方法及系统 |
CN108875036A (zh) * | 2018-06-26 | 2018-11-23 | 北京永安信通科技股份有限公司 | 页面数据缓存方法、装置、页面缓存数据结构和电子设备 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112667847A (zh) * | 2019-10-16 | 2021-04-16 | 北京奇艺世纪科技有限公司 | 数据缓存方法、数据缓存装置和电子设备 |
CN112732751A (zh) * | 2020-12-30 | 2021-04-30 | 北京懿医云科技有限公司 | 一种医学数据处理方法、装置、存储介质及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11288252B2 (en) | Transactional key-value store | |
CN107391653B (zh) | 一种分布式NewSQL数据库系统及图片数据储存方法 | |
CN108009008B (zh) | 数据处理方法和系统、电子设备 | |
US11023453B2 (en) | Hash index | |
RU2672719C2 (ru) | Журналируемое хранение без блокировок для нескольких способов доступа | |
US8161244B2 (en) | Multiple cache directories | |
EP3170106B1 (en) | High throughput data modifications using blind update operations | |
US8868926B2 (en) | Cryptographic hash database | |
US20180011892A1 (en) | Foster twin data structure | |
US20170351543A1 (en) | Heap data structure | |
CN107491523B (zh) | 存储数据对象的方法及装置 | |
CN103106286B (zh) | 元数据的管理方法和装置 | |
EP2541423B1 (en) | Replacement policy for resource container | |
CN109800185B (zh) | 一种数据存储系统中的数据缓存方法 | |
US11100083B2 (en) | Read only bufferpool | |
CN107301215A (zh) | 一种搜索结果缓存方法及装置、搜索方法及装置 | |
US10747773B2 (en) | Database management system, computer, and database management method | |
CN106777085A (zh) | 一种数据处理方法、装置及数据查询系统 | |
CN108319634B (zh) | 分布式文件系统的目录访问方法和装置 | |
CN109492020A (zh) | 一种数据缓存方法、装置、电子设备及存储介质 | |
US11741081B2 (en) | Method and system for data handling | |
KR101806394B1 (ko) | 모바일 dbms환경에서 트랜잭션에 특화된 색인 캐시의 구조를 갖는 데이터 처리 방법 | |
CN110020272A (zh) | 缓存方法、装置以及计算机存储介质 | |
US10416901B1 (en) | Storage element cloning in presence of data storage pre-mapper with multiple simultaneous instances of volume address using virtual copies | |
US11138231B2 (en) | Method and system for data handling |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: Room 311501, Unit 1, Building 5, Courtyard 1, Futong East Street, Chaoyang District, Beijing Applicant after: Beijing Zhichuangyu Information Technology Co., Ltd. Address before: Room 311501, Unit 1, Building 5, Courtyard 1, Futong East Street, Chaoyang District, Beijing Applicant before: Beijing Knows Chuangyu Information Technology Co.,Ltd. |
|
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190319 |