CN106569963A - 缓存方法和装置 - Google Patents
缓存方法和装置 Download PDFInfo
- Publication number
- CN106569963A CN106569963A CN201610935099.3A CN201610935099A CN106569963A CN 106569963 A CN106569963 A CN 106569963A CN 201610935099 A CN201610935099 A CN 201610935099A CN 106569963 A CN106569963 A CN 106569963A
- Authority
- CN
- China
- Prior art keywords
- data
- characteristic information
- node
- access
- root node
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/123—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供一种缓存方法和装置。该方法包括:判断缓存树中是否包含客户端的期望访问数据的特征信息;若不包含,则自数据源获取期望访问数据以进行缓存;将所获取的期望访问数据的特征信息插入缓存树的根节点中;检测插入期望访问数据的特征信息后的根节点中所有特征信息所对应的数据的大小总和是否超过阈值;若超过阈值,则按照数据的访问时间从远到近从根节点中逐个移出相应的特征信息至下级的节点,直到根节点中剩余的所有特征信息所对应的数据的大小总和位于阈值范围内。本发明实施例通过以上方案可以使比较热的数据总是位于更容易被查找到的位置,从而可以提高数据的查找性能,可以提高访问效率。
Description
技术领域
本发明涉及数据的缓存技术,尤其涉及一种缓存方法和装置。
背景技术
近年来,数字视频的应用迅猛发展。在数字视频系统中,视频的采集、传输、编码、解码等过程会不可避免地引入CDN(Content Delivery Network,内容分发网络)缓存系统。
现有技术中,业界常见的缓存方法是最近最少使用算法(LRU,Least recentlyused)。LRU算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。该缓存方法,主要基于Map(映射)和链表实现。
其中,Map(映射)接口定义的集合又称为查找表,用于存储所谓“Key-Value(键-值)"映射对。Key可以看成是Value的索引,作为key的对象在集合中不可重复。根据内部数据结构的不同,Map接口有多种实现类,其中常用的有内部为哈希表实现的哈希映射(HashMap)和内部为排序二叉树实现的树映射(TreeMap)。而Map的大部分采用红黑树(RedBlack Tree)实现。红黑树是一种自平衡二叉查找树,红黑树和平衡二叉树类似,都是在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,从而可以获得较高的查找性能。
在实现本发明过程中,发明人发现相关技术中至少存在如下问题:由于Map的大部分采用红黑树实现,缓存大量数据时,红黑书的高度较高,导致索引效率较低,查找性能不高。
发明内容
为了至少解决现有技术中的查找性能不高等问题,第一方面,本发明实施例提供一种缓存方法,包括:
判断缓存树中是否包含客户端的期望访问数据的特征信息;
若不包含,则自数据源获取所述期望访问数据以进行缓存;
将所获取的期望访问数据的特征信息插入所述缓存树的根节点中;
检测插入所述期望访问数据的特征信息后的所述根节点中所有特征信息所对应的数据的大小总和是否超过阈值;
若超过所述阈值,则按照数据的访问时间从远到近从所述根节点中逐个移出相应的特征信息至下级的节点,直到所述根节点中剩余的所有特征信息所对应的数据的大小总和位于所述阈值范围内。
第二方面,本发明实施例提供一种缓存装置,包括:
判断模块,配置用于判断缓存树中是否包含客户端的期望访问数据的特征信息;
获取存储模块,配置用于若不包含,则自数据源获取所述期望访问数据以进行缓存;
插入模块,配置用于将所获取的期望访问数据的特征信息插入所述缓存树的根节点中;
检测模块,配置用于检测插入所述期望访问数据的特征信息后的所述根节点中所有特征信息所对应的数据的大小总和是否超过所述阈值;
移出模块,配置用于若超过所述阈值,则按照数据的访问时间从远到近从所述根节点中逐个移出相应的特征信息至下级的节点,直到所述根节点中剩余的所有特征信息所对应的数据的大小总和位于所述阈值范围内。
第三方面,本发明实施例还提供了一种非易失性计算机存储介质,存储有计算机可执行指令,所述计算机可执行指令用于执行本发明上述任一项缓存方法。
第四方面,本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括存储在非易失性计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,使所述计算机执行上述任一项缓存方法。
第五方面,本发明实施例还提供了一种电子设备,包括:至少一个处理器;以及存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明上述任一项缓存方法。
本发明实施例提供了一种基于缓存树的缓存模式,通过对新的数据进行缓存并将新的数据的特征信息插入至根节点,之后若根节点中插入的特征信息超过阈值,则将访问时间比较久远的数据的特征信息下移至该根节点的子节点中,可以使新来的数据和访问时间比较近的数据总是位于最容易被访问的位置(根节点),从而可以实现更高的查找性能,进而可以提高数据的访问效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例提供的一种缓存方法的流程图;
图2是本发明一实施例提供的另一种缓存方法的流程图;
图3是本发明一实施例提供的又一种缓存方法的流程图;
图4是本发明一实施例提供的再一种缓存方法的流程图;
图5是本发明一实施例提供的缓存方法的一种实现的流程图;
图6是本发明一实施例提供的一种缓存装置的结构示意图;
图7是本发明一实施例提供的电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参考图1,其示出了本发明一实施例提供的一种缓存方法的流程图。
如图1所述,本发明实施例提供的一种缓存方法,包括如下步骤:
步骤101,判断缓存树中是否包含客户端的期望访问数据的特征信息;
步骤102,若不包含,则自数据源获取期望访问数据以进行缓存;
步骤103,将所获取的期望访问数据的特征信息插入缓存树的根节点中;
步骤104,检测插入期望访问数据的特征信息后的根节点中所有特征信息所对应的数据的大小总和是否超过阈值;
步骤105,若超过阈值,则按照数据的访问时间从远到近从根节点中逐个移出相应的特征信息至下级的节点,直到根节点中剩余的所有特征信息所对应的数据的大小总和位于阈值范围内。
在本实施例中,对于步骤101,缓存装置首先需要判断缓存树(Buffer tree)中是否包含客户端的期望访问数据的特征信息。其中,期望访问数据的特征信息可以包括期望访问数据的Key(例如ID)、访问时间以及期望访问数据的存储地址等,每一个数据都对应一个数据的特征信息。缓存装置可以是服务器或者终端设备的内存等,缓存装置可以通过多种方式判断缓存树中是否包含客户端的期望访问数据,例如可以通过布隆过滤器判断缓存树中是否包含期望访问数据的特征信息;或者可以基于缓存树的索引查找,找到与期望访问数据的特征信息相关的索引节点,之后查找该索引节点中存储的特征信息,或者还可以通过本领域技术人员目前已知的其他方式及未来开发的方式判断,本发明在此方面没有限制。其中,缓存树(Buffer tree)是一种I/O(Input/Output,输入输出)优化算法,与B+tree的结构比较类似,与B+tree不同的是,缓存树在原来不存储数据的非叶子节点上也存储了数据。
之后,对于步骤102,如果判断缓存树中不包括期望访问数据的特征信息,或者经过查找之后发现缓存树中没有相应的特征信息,则缓存装置需要从数据源(例如可以是别的CDN节点)获取期望访问数据并将获取的数据存储在缓存装置(例如内存)中。
接着,对于步骤103,缓存装置还需要将获取的期望访问数据的特征信息插入至缓存树的根节点中,其中,在缓存树的根节点中可以使用链表等数据结构存储特征信息。在一些可选的实施例中,可以使用跳表存储特征信息,由于跳表本身具有很好的查找性能,因此使用跳表可以提高查找效率。
然后,对于步骤104,当缓存装置在根节点中插入期望访问数据的特征信息之后,还需要检测插入特征信息后的根节点中所有特征信息对应的数据的大小总和是否超过阈值。其中,每一个特征信息对应一个存储的数据,每一个数据可以有不同的大小,每一个节点中存储的特征信息对应的数据的大小都有一个阈值,例如所有节点可以统一制定一个阈值,本发明在此方面没有限制。当插入特征信息之后,检测到根节点中所有特征信息所对应的数据大小没有超过阈值时,则无需后续操作。
最后,对于步骤105,若超过阈值时,则后续还需要从根节点中移出部分特征信息以使剩余的特征信息对应的数据的大小总和位于阈值范围内。移出的部分特征信息可以是访问时间比较久远的。按照数据的访问时间从远到近从根节点中逐个移出相应的特征信息至根节点的子节点,直至其中某一个特征信息移出之后,根节点中的所有特征信息对应的数据的大小总和从超出阈值变为位于阈值范围内。进一步地,还可以按照特征信息的ID将移出的特征信息分配至具有不同索引信息的子节点中。
本实施例的缓存方法,通过将缓存树中不包含的数据的特征信息存储在根节点,可以保证新来的数据的特征信息总是在缓存树的最上层,方便查找。通过设置阈值可以使每一个节点上的数据更为平均,不至于因为特征信息对应的的数据太多而影响查找速度;另外,通过将访问时间比较久远的节点移出,还可以保证根节点中存储的特征信息一直都是访问时间最近的特征信息,从而可以使比较热点的数据总是位于根节点和上层节点上,查找时也能有更快的查找速度,提高查找性能。进一步地,可以使最热的数据分布在缓存树的上层,更有利于热数据的索引。
在一些可选的实施例中,数据的特征信息包括数据的键值和属性值,数据的属性值包括数据的存储地址。通过存储数据的特征信息而不是数据本身,后续插入和查找时,只需修改相应的指针即可实现,提高插入和查找的效率。
在一些可选的实施例中,各节点上均存储有跳表(SkipList),数据的特征信息存储在节点的跳表中。进一步可选的,数据的特征信息的查询基于B+tree从根节点至子节点的查询算法实现。通过使用跳表存储特征信息,可以提高特征信息的查找性能。进一步地,在查找上基于B+tree,平衡性能更好,可以进一步提高查找性能。另外,大量数据时,红黑书的高度要高于B+tree,索引效率低于B+tree。
在另一些可选的实施例中,判断客户端的期望访问数据的特征信息是否包含在缓存树中基于布隆过滤器实现。其中,布隆过滤器(Bloom Filter)可以用于检索一个元素是否在一个集合中。通过引入布隆过滤器,对原本缓存树中存在的数据不会漏报,可以提高整体性能。每次有新的数据加入,只需添加该数据至布隆过滤器即可。
进一步参考图2,其示出了本发明一实施例提供的另一种缓存方法的流程图。其中,本实施例可以为图1中步骤101判断之后,缓存树中包含期望访问数据的特征信息的情况。
如图2所示,本发明实施例提供的另一种缓存方法,可以在图1示出的步骤101之后,包括如下步骤:
步骤201,若缓存树中包含客户端的期望访问数据的特征信息,则确定特征信息在缓存树中所在的缓存节点;
步骤202,响应于客户端对期望访问数据的访问,将缓存节点中的特征信息中的历史访问时间更新为客户端的当前访问时间;
步骤203,若缓存节点为非根节点,则比较更新前的历史访问时间和当前访问时间,判断期望访问数据是否为热门数据;
步骤204,若是热门数据,则将期望访问数据的已更新为当前访问时间的特征信息从非根节点上移至上级的节点。
在本实施例中,对于步骤201,若缓存装置判断缓存树中包含有相应的特征信息,则可以基于缓存树中每个节点的索引信息找到各个关联的节点,之后查找节点中存储的特征信息即可确定期望访问数据的特征信息所在的缓存节点。
之后,对于步骤202,响应于客户端对查找到的期望访问数据的访问,将缓存节点中的特征信息中的历史访问时间更新为客户端的当前访问时间。通过记录访问时间,之后可以根据访问时间确定该数据是否为热门数据。
接着,对于步骤203,如果查找到的期望访问数据的特征信息所在的缓存节点不是根节点,则缓存装置可以比较该特征信息更新前的历史访问时间和当前访问时间,从而判断期望访问数据是不是热门数据。进一步地,在一种实现中,缓存装置可以通过记录的历史访问时间和当前访问时间的时间差确定该数据是不是热门数据,如果时间差小于预定阈值(例如当时间差小于2ms),则确定该数据为热门数据;缓存装置可以通过记录的历史访问时间和当前访问时间确定该特征信息在一定时间(如10ms)内被访问的次数,如果被访问的次数达到预定阈值(例如可以设置为2次),例如被访问的次数为3次,则可以认为该数据为热门数据。
之后,对于步骤204,如果判断为热门数据,可以将已经更新访问时间的期望访问数据的特征信息从该非根节点上移至上级节点。例如,可以在每次判断为热门数据后上移一层,也可以在被判断为热门数据之后直接上移至根节点,本发明在此方面没有限制。
本实施例的缓存方法通过更新查找到的期望访问数据的访问时间,之后基于更新后的访问时间与历史访问时间判断该期望访问数据是否为热门数据,从而将热门数据的特征信息上移,使最热的数据分布在缓存树的上层,可以方便对热门数据的查找,提高热门数据的查找效率,从而提高整体的查找性能。
请参考图3,其示出了本发明一实施例提供的又一种缓存方法的流程图。其中,本实施例为图1步骤105中将根节点的特征信息逐个移出至根节点的子节点之后,或者图2步骤204中将特征信息从非根节点上移至上级节点之后,子节点或者上级节点在移入特征信息之后的处理情况。
如图3所述,本发明实施例提供的再一种缓存方法,在图1示出的步骤可以是在105之后或者也可以是在图2示出的步骤204之后,包括如下步骤:
步骤301,检测被移入特征信息后的节点中的所有特征信息所对应的数据的大小总和是否超过阈值;
步骤302,若超过阈值,则按照数据的访问时间从远到近从被移入特征信息后的节点中逐个移出相应的特征信息至下级的节点,直到被移入特征信息后的节点中剩余的所有特征信息所对应的数据的大小总和位于阈值范围内。
在本实施例中,对于步骤301,存储装置可以在节点有特征信息移入之后,检测节点中的所有特征信息所对应的数据的大小总和是否超过阈值。其中,若移入特征信息之后没有超过阈值,则无需后续操作。之后,对于步骤302,若移入特征信息之后超过阈值时,缓存装置需要移出部分特征信息至该节点的下级子节点以保证该节点中剩余的所有特征信息所对应的数据的大小总和位于阈值范围内。
在本实施例中,缓存装置通过将超出阈值范围的节点中的访问时间比较久远的特征信息逐个移出至相应的索引范围的下级子节点,直到特征信息所对应的大小总和位于阈值范围内,可以控制每一个节点中的数据量,从而可以使缓存树保持平衡,使查找更加高效。另外,由于将其中访问时间比较久远的数据下移,可以保证比较活跃的数据总是在上层节点中。
进一步参考图4,其示出了本发明一实施例提供的再一种缓存方法的流程图。其中,本实施例可以为图3步骤302中“按照数据的访问时间从远到近从节点中逐个移出相应的特征信息至节点的下级子节点”之后的步骤401和步骤402。其中,图3中的步骤可以递归执行多次直至特征信息被移入叶子节点中。
如图4所示,本发明实施例提供的还一种缓存方法,可以在图3中的步骤302之后,还包括:
步骤401,若缓存树的叶子节点被移入特征信息、且叶子节点中所有特征信息所对应的数据的大小总和超过阈值,则按照数据的访问时间从远到近从叶子节点中逐个删除相应的特征信息,直到叶子节点中剩余的所有特征信息所对应的数据的大小总和位于阈值范围内;
步骤402,将删除的特征信息所对应的缓存数据丢弃。
在本实施例中,对于步骤401,当特征信息被移入下级子节点之后,若下级子节点为叶子节点,并且移入特征信息之后该叶子节点中所有特征信息所对应的数据的大小总和超过阈值时,缓存装置可以按照访问时间从远至近逐个删除相应的特征信息,直到叶子节点中剩余特征信息对应的数据大小总和位于阈值范围内。之后,对于步骤402,缓存装置将删除的特征信息多对应的存储数据丢弃。例如可以将相应的特征信息从内存中清除。
本实施例的缓存方法,通过在超出阈值之后删除访问时间比较久远的特征信息和相应的数据,可以保证缓存树和缓存的数据不至于占据太多空间而影响处理效率,进一步地,由于所有节点的阈值都被控制在一定范围,也能保证对每一个数据的特征信息查找效率,从而可以保证整体的查找性能。
应当注意,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。相反,流程图中描绘的某些步骤可以改变执行顺序,或者其中某些步骤可以同时执行。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
请参考图5,其示出了本发明实施例提供的缓存方法的一种实现的流程图。其中,该缓存方法主要在内存中实现。
在查找数据时,先根据布隆过滤器判断是否存储在该数据,根据布隆过滤器的特点,不存在确定是不会误报,如果数据存在,则继续查找该节点中存储的数据,并将该数据的访问时间设置为当前时间。
当查找不到相应的数据时,则需要将该数据插入Buffer tree的节点中。将数据插入到Buffer tree的根节点中,并设置节点的最后访问时间为当前时间,并添加该节点布隆过滤器。如果该节点数据超过最大限制,则对该节点进行处理:进行B+tree分裂处理,如果是内部节点,则将访问时间最早的N个数据插入到子节点中,如果是叶子节点,则抛弃访问最早的N个数据。
另外,为了避免系统内存碎片,提升系统性能,内存分配的最小单位可以为系统内存页大小,通常为4K,并在节点的查找中使用SkipList(跳表),搜索性能为O(lg(n)),比传统的链表或者数组方式性能更好,其中,数组或者链表性能为O(n)。
进一步地,可以使用SkipList存储节点上的数据,在查找的过程中,先查找到数据所在的缓存树的节点,再通过SkipList查找到相应的数据,设置该数据节点的访问时间。
传统的LRU算法缓存是基于Map或者HashMap来做,本文提到的缓存可以是专门为视频存储而设计的缓存系统。为了顺序访问而适应视频的流式访问,必须使用基于Map的缓存。在查找性能上,基于B+tree,树的平衡性更好,深度平均是平衡二叉树的1/3。因为引入布隆过滤器,除去SkipList删除和插入的额外开销的,性能可以提升30%。
其中,插入的算法首先要经过查找,找到数据要插入树的具体节点,再插入到该节点的SkipList中。
之后再进一步判断该节点是否已经存入太多数据,如果存在太多数据。则对该节点进行LRU,将节点中的访问不频繁的数据,向下流入子节点。因而,子节点也有数据插入,再递归处理子节点的插入情况。
请参考图6,其示出了本发明实施例提供的一种缓存装置的结构示意图。如图6所示,缓存装置600包括:判断模块601、获取存储模块602、插入模块603、检测模块604以及移出模块605。
其中,判断模块601,配置用于判断缓存树中是否包含客户端的期望访问数据的特征信息;获取存储模块602,配置用于若判断模块601判断不包含,则自数据源获取期望访问数据以进行缓存;插入模块603,配置用于将获取存储模块602所获取的期望访问数据的特征信息插入缓存树的根节点中;检测模块604,配置用于检测插入所述期望访问数据的特征信息后的所述根节点中所有特征信息所对应的数据的大小总和是否超过所述阈值;以及移出模块605,配置用于若超过所述阈值,则按照数据的访问时间从远到近从所述根节点中逐个移出相应的特征信息至下级的节点,直到所述根节点中剩余的所有特征信息所对应的数据的大小总和位于所述阈值范围内。
在本实施例中,通过将缓存树中未存储的特征信息插入到缓存树的根节点中,并将超出阈值的访问时间比较久远的数据的特征信息移出至下级节点,可以使最新插入的数据总是位于缓存树的上层,由于会将其中访问时间比较久远的数据的特征信息移出,可以使访问时间比较近的数据的特征信息能够更快地被访问,从而可以提高查找性能。
在一些可选的实施例中,缓存装置600还包括:节点确定模块(图中未示出),配置用于若缓存树中包含客户端的期望访问数据的特征信息,则确定特征信息在缓存树中所在的缓存节点;时间更新模块(图中未示出),配置用于响应于客户端对期望访问数据的访问,将缓存节点中的特征信息中的历史访问时间更新为客户端的当前访问时间;热门数据判断模块(图中未示出),配置用于若缓存节点为非根节点,则比较更新前的历史访问时间和当前访问时间,判断期望访问数据是否为热门数据;以及热门数据上移模块(图中未示出),配置用于若期望访问数据是热门数据,则将期望访问数据的已更新为当前访问时间的特征信息从非根节点上移至上级的节点。
在一些可选的实施例中,缓存装置600还包括:移入检测模块(图中未示出),配置用于检测被移入特征信息后的节点中的所有特征信息所对应的数据的大小总和是否超过阈值;以及特征信息下移模块(图中未示出),配置用于若超过阈值,则按照数据的访问时间从远到近从被移入特征信息后的节点中逐个移出相应的特征信息至下级的节点,直到被移入特征信息后的节点中剩余的所有特征信息所对应的数据的大小总和位于阈值范围内。
在另一些可选的实施例中,缓存装置600还包括:特征信息删除模块(图中未示出),配置用于若缓存树的叶子节点被移入特征信息、且叶子节点中所有特征信息所对应的数据的大小总和超过阈值,则按照数据的访问时间从远到近从叶子节点中逐个删除相应的特征信息,直到叶子节点中剩余的所有特征信息所对应的数据的大小总和位于阈值范围内;以及数据丢弃模块(图中未示出),配置用于将删除的特征信息所对应的缓存数据丢弃。
需要说明的是,移出模块605和特征信息下移模块(图中未示出)可以是同一个模块也可以是不同的模块,即可以由同一个功能模块实现相应的功能,也可以由不同的功能模块实现,具体可以根据用户的不同需求确定,本申请在此方面没有限制。
应当理解,以上实施例中记载的诸模块与图1、图2、图3以及图4中描述的方法中的各个步骤相对应。由此,上文针对方法描述的操作、特征和效果同样适用于图6中已示出及未示出的诸模块,在此不再赘述。
本发明实施例提供了一种非易失性计算机存储介质,所述计算机存储介质存储有计算机可执行指令,该计算机可执行指令可执行上述任意方法实施例中的缓存方法;
作为一种实施方式,本发明的非易失性计算机存储介质存储有计算机可执行指令,所述计算机可执行指令设置为:
判断缓存树中是否包含客户端的期望访问数据的特征信息;
若不包含,则自数据源获取所述期望访问数据以进行缓存;
将所获取的期望访问数据的特征信息插入所述缓存树的根节点中;
检测插入所述期望访问数据的特征信息后的所述根节点中所有特征信息所对应的数据的大小总和是否超过阈值;
若超过所述阈值,则按照数据的访问时间从远到近从所述根节点中逐个移出相应的特征信息至下级的节点,直到所述根节点中剩余的所有特征信息所对应的数据的大小总和位于所述阈值范围内。
作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本发明实施例中的缓存方法对应的程序指令/模块(例如,附图6所示的判断模块601、获取存储模块602、插入模块603、检测模块604以及移出模块605)。所述一个或者多个模块存储在所述非易失性计算机可读存储介质中,当被处理器执行时,执行上述任意方法实施例中的缓存方法。
非易失性计算机可读存储介质可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据缓存装置的使用所创建的数据等。此外,非易失性计算机可读存储介质可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,非易失性计算机可读存储介质可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至缓存装置。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括存储在非易失性计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,使所述计算机执行上述任一项缓存方法。
图7是本发明一实施例提供的电子设备的结构示意图,如图7所示,该设备包括:
一个或多个处理器710以及存储器720,图7中以一个处理器710为例。
缓存方法的设备还可以包括:输入装置730和输出装置740。
处理器710、存储器720、输入装置730和输出装置740可以通过总线或者其他方式连接,图7中以通过总线连接为例。
存储器720为上述的非易失性计算机可读存储介质。处理器710通过运行存储在存储器720中的非易失性软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例的缓存方法。
输入装置730可接收输入的数字或字符信息,以及产生与缓存装置的用户设置以及功能控制有关的键信号输入。输出装置740可包括显示屏等显示设备。
上述产品可执行本发明实施例所提供的方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本发明实施例所提供的方法。
作为一种实施方式,上述电子设备包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
判断缓存树中是否包含客户端的期望访问数据的特征信息;
若不包含,则自数据源获取所述期望访问数据以进行缓存;
将所获取的期望访问数据的特征信息插入所述缓存树的根节点中;
检测插入所述期望访问数据的特征信息后的所述根节点中所有特征信息所对应的数据的大小总和是否超过阈值;
若超过所述阈值,则按照数据的访问时间从远到近从所述根节点中逐个移出相应的特征信息至下级的节点,直到所述根节点中剩余的所有特征信息所对应的数据的大小总和位于所述阈值范围内。
本发明实施例的电子设备以多种形式存在,包括但不限于:
(1)移动通信设备:这类设备的特点是具备移动通信功能,并且以提供话音、数据通信为主要目标。这类终端包括:智能手机(例如iPhone)、多媒体手机、功能性手机,以及低端手机等。
(2)超移动个人计算机设备:这类设备属于个人计算机的范畴,有计算和处理功能,一般也具备移动上网特性。这类终端包括:PDA、MID和UMPC设备等,例如iPad。
(3)便携式娱乐设备:这类设备可以显示和播放多媒体内容。该类设备包括:音频、视频播放器(例如iPod),掌上游戏机,电子书,以及智能玩具和便携式车载导航设备。
(4)服务器:提供计算服务的设备,服务器的构成包括处理器、硬盘、内存、系统总线等,服务器和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。
(5)其他具有数据交互功能的电子装置。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (9)
1.一种缓存方法,包括:
判断缓存树中是否包含客户端的期望访问数据的特征信息;
若不包含,则自数据源获取所述期望访问数据以进行缓存;
将所获取的期望访问数据的特征信息插入所述缓存树的根节点中;
检测插入所述期望访问数据的特征信息后的所述根节点中所有特征信息所对应的数据的大小总和是否超过阈值;
若超过所述阈值,则按照数据的访问时间从远到近从所述根节点中逐个移出相应的特征信息至下级的节点,直到所述根节点中剩余的所有特征信息所对应的数据的大小总和位于所述阈值范围内。
2.根据权利要求1所述的方法,其中,所述方法还包括:
若所述缓存树中包含客户端的期望访问数据的特征信息,则确定所述特征信息在所述缓存树中所在的缓存节点;
响应于所述客户端对所述期望访问数据的访问,将所述缓存节点中的所述特征信息中的历史访问时间更新为所述客户端的当前访问时间;
若所述缓存节点为非根节点,则比较更新前的历史访问时间和所述当前访问时间,判断所述期望访问数据是否为热门数据;
若是所述热门数据,则将已更新的特征信息从所述非根节点上移至上级的节点。
3.根据权利要求1或2所述的方法,所述方法还包括:
检测被移入特征信息后的节点中的所有特征信息所对应的数据的大小总和是否超过所述阈值;
若超过所述阈值,则按照数据的访问时间从远到近从所述被移入特征信息后的节点中逐个移出相应的特征信息至下级的节点,直到所述被移入特征信息后的节点中剩余的所有特征信息所对应的数据的大小总和位于所述阈值范围内。
4.根据权利要求3所述的方法,还包括:
若所述缓存树的叶子节点被移入特征信息、且所述叶子节点中所有特征信息所对应的数据的大小总和超过所述阈值,则按照数据的访问时间从远到近从所述叶子节点中逐个删除相应的特征信息,直到所述叶子节点中剩余的所有特征信息所对应的数据的大小总和位于所述阈值范围内;
将删除的特征信息所对应的缓存数据丢弃。
5.一种缓存装置,包括:
判断模块,配置用于判断缓存树中是否包含客户端的期望访问数据的特征信息;
获取存储模块,配置用于若不包含,则自数据源获取所述期望访问数据以进行缓存;
插入模块,配置用于将所获取的期望访问数据的特征信息插入所述缓存树的根节点中;
检测模块,配置用于检测插入所述期望访问数据的特征信息后的所述根节点中所有特征信息所对应的数据的大小总和是否超过所述阈值;
移出模块,配置用于若超过所述阈值,则按照数据的访问时间从远到近从所述根节点中逐个移出相应的特征信息至下级的节点,直到所述根节点中剩余的所有特征信息所对应的数据的大小总和位于所述阈值范围内。
6.根据权利要求5所述的装置,其中,所述装置还包括:
节点确定模块,配置用于若所述缓存树中包含客户端的期望访问数据的特征信息,则确定所述特征信息在所述缓存树中所在的缓存节点;
时间更新模块,配置用于响应于所述客户端对所述期望访问数据的访问,将所述缓存节点中的所述特征信息中的历史访问时间更新为所述客户端的当前访问时间;
热门数据判断模块,配置用于若所述缓存节点为非根节点,则比较更新前的历史访问时间和所述当前访问时间,判断所述期望访问数据是否为热门数据;
热门数据上移模块,配置用于若所述期望访问数据是所述热门数据,则将已更新的特征信息从所述非根节点上移至上级的节点。
7.根据权利要求5或6所述的装置,所述装置还包括:
移入检测模块,配置用于检测被移入特征信息后的节点中的所有特征信息所对应的数据的大小总和是否超过所述阈值;
特征信息下移模块,配置用于若超过所述阈值,则按照数据的访问时间从远到近从所述被移入特征信息后的节点中逐个移出相应的特征信息至下级的节点,直到所述被移入特征信息后的节点中剩余的所有特征信息所对应的数据的大小总和位于所述阈值范围内。
8.根据权利要求7所述的装置,所述装置还包括:
特征信息删除模块,配置用于若所述缓存树的叶子节点被移入特征信息、且所述叶子节点中所有特征信息所对应的数据的大小总和超过所述阈值,则按照数据的访问时间从远到近从所述叶子节点中逐个删除相应的特征信息,直到所述叶子节点中剩余的所有特征信息所对应的数据的大小总和位于所述阈值范围内;
数据丢弃模块,配置用于将删除的特征信息所对应的缓存数据丢弃。
9.一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;
其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明权利要求1-4中任一项所述的缓存方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610935099.3A CN106569963A (zh) | 2016-10-25 | 2016-10-25 | 缓存方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610935099.3A CN106569963A (zh) | 2016-10-25 | 2016-10-25 | 缓存方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106569963A true CN106569963A (zh) | 2017-04-19 |
Family
ID=58533469
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610935099.3A Pending CN106569963A (zh) | 2016-10-25 | 2016-10-25 | 缓存方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106569963A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107197359A (zh) * | 2017-05-18 | 2017-09-22 | 百度在线网络技术(北京)有限公司 | 视频文件缓存方法及装置 |
CN107590173A (zh) * | 2017-07-28 | 2018-01-16 | 武汉市测绘研究院 | 二维时空地理信息在线回溯及对比方法 |
CN108153883A (zh) * | 2017-12-26 | 2018-06-12 | 北京百度网讯科技有限公司 | 搜索方法和装置、计算机设备、程序产品以及存储介质 |
CN109992597A (zh) * | 2019-03-11 | 2019-07-09 | 福建天泉教育科技有限公司 | 一种热点数据的存储方法及终端 |
CN110019366A (zh) * | 2017-12-21 | 2019-07-16 | 北京京东尚科信息技术有限公司 | 一种缓存数据的方法和装置 |
CN110659271A (zh) * | 2019-08-29 | 2020-01-07 | 福建天泉教育科技有限公司 | 一种数据删除的优化方法及终端 |
CN111829533A (zh) * | 2019-04-18 | 2020-10-27 | 广州市百果园信息技术有限公司 | 一种数据检测方法、装置、设备和存储介质 |
-
2016
- 2016-10-25 CN CN201610935099.3A patent/CN106569963A/zh active Pending
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107197359A (zh) * | 2017-05-18 | 2017-09-22 | 百度在线网络技术(北京)有限公司 | 视频文件缓存方法及装置 |
CN107590173A (zh) * | 2017-07-28 | 2018-01-16 | 武汉市测绘研究院 | 二维时空地理信息在线回溯及对比方法 |
CN110019366A (zh) * | 2017-12-21 | 2019-07-16 | 北京京东尚科信息技术有限公司 | 一种缓存数据的方法和装置 |
CN108153883A (zh) * | 2017-12-26 | 2018-06-12 | 北京百度网讯科技有限公司 | 搜索方法和装置、计算机设备、程序产品以及存储介质 |
CN108153883B (zh) * | 2017-12-26 | 2022-02-18 | 北京百度网讯科技有限公司 | 搜索方法和装置、计算机设备、程序产品以及存储介质 |
CN109992597A (zh) * | 2019-03-11 | 2019-07-09 | 福建天泉教育科技有限公司 | 一种热点数据的存储方法及终端 |
CN111829533A (zh) * | 2019-04-18 | 2020-10-27 | 广州市百果园信息技术有限公司 | 一种数据检测方法、装置、设备和存储介质 |
CN111829533B (zh) * | 2019-04-18 | 2022-09-09 | 广州市百果园信息技术有限公司 | 一种数据检测方法、装置、设备和存储介质 |
CN110659271A (zh) * | 2019-08-29 | 2020-01-07 | 福建天泉教育科技有限公司 | 一种数据删除的优化方法及终端 |
CN110659271B (zh) * | 2019-08-29 | 2022-07-26 | 福建天泉教育科技有限公司 | 一种数据删除的优化方法及终端 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106569963A (zh) | 缓存方法和装置 | |
US9262458B2 (en) | Method and system for dynamically partitioning very large database indices on write-once tables | |
US8738861B2 (en) | Data prefetching method for distributed hash table DHT storage system, node, and system | |
CN107491523B (zh) | 存储数据对象的方法及装置 | |
US10698831B2 (en) | Method and apparatus for data access | |
US9871727B2 (en) | Routing lookup method and device and method for constructing B-tree structure | |
KR20190119080A (ko) | 다중-스트림 저장 장치를 위한 스트림 선택 | |
KR102437775B1 (ko) | 효율적인 맵핑을 위한 페이지 캐시 장치 및 방법 | |
KR20200053512A (ko) | Kvs 트리 데이터베이스 | |
TW201842454A (zh) | 合併樹廢棄項目指標 | |
US20130297613A1 (en) | Indexing based on key ranges | |
CN110489405B (zh) | 数据处理的方法、装置和服务器 | |
CN110569245A (zh) | 重复数据删除系统中基于强化学习的指纹索引预取方法 | |
CN106599091B (zh) | 基于键值存储的rdf图结构存储和索引方法 | |
CN104063384A (zh) | 一种数据检索方法及装置 | |
US20210349866A1 (en) | Deduplication-Adapted Casedb For Edge Computing | |
WO2020082597A1 (zh) | 一种b+树节点的批量插入和删除方法及装置 | |
CN108875046A (zh) | 一种存储系统访问方法、装置及电子设备 | |
US20210286730A1 (en) | Method, electronic device and computer program product for managing cache | |
CN111506604A (zh) | 访问数据的方法、装置和计算机程序产品 | |
CN102346783B (zh) | 数据检索方法及装置 | |
CN106294211A (zh) | 一种多路顺序流的检测方法及装置 | |
CN109408539B (zh) | 数据操作方法、装置、服务器和存储介质 | |
CN106815283A (zh) | 数据处理方法、装置及电子设备 | |
JP2018511131A (ja) | オンライン媒体のための階層的なコストベースのキャッシング |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20170419 |