[发明专利]一种大容量缓存及其快速检索方法、构建方法在审
申请号: | 201410495963.3 | 申请日: | 2014-09-24 |
公开(公告)号: | CN104317810A | 公开(公告)日: | 2015-01-28 |
发明(设计)人: | 杨耀敏;易乐天;曲维杰 | 申请(专利权)人: | 北京云巢动脉科技有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京市盛峰律师事务所 11337 | 代理人: | 于国富 |
地址: | 100091 北京市海淀*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 容量 缓存 及其 快速 检索 方法 构建 | ||
技术领域
本发明涉及数据检索领域,尤其涉及一种大容量缓存及其快速检索方法、构建方法。
背景技术
在处理大量数据时,数据的检索时间是影响程序性能的一个重要因素。
目前,对于大量数据的检索,一般利用“树”这种数据结构,比如:red-black tree、radix tree等。
radix tree是一种比较常用的树,可以实现数据的有效存储,并且可以实现数据的快速查询。
但是,使用radix tree这种数据结构,实际数据都只能保存在叶子节点。在处理大量数据的时候,需要创建大量管理节点来管理叶子节点,会造成大量内存空间的浪费。
发明内容
本发明的目的在于提供一种大容量缓存及其快速检索方法、构建方法,从而解决现有技术中存在的前述问题。
为了实现上述目的,本发明采用的技术方案如下:
一种大容量缓存,所述大容量缓存的数据结构包括链表和radix tree;数据保存在所述链表中,所述链表设置于所述radix tree的叶子节点上;所述数据的key包括第一key和第二key,所述第一key用于检索所述radix tree,查找所述key对应的所述链表;所述第二key用于检索所述key对应的所述链表,查找所述数据。
具体地,所述radix tree的节点槽数量设置为16~128,且所述radix tree的高度设置为3~8。
优选地,所述radix tree的节点槽数量设置为64,且所述radix tree的高度设置为5。
上述大容量缓存的快速检索方法,包括如下步骤:
S1,接收key;
S2,根据第一key检索radix tree,查找所述key对应的链表;如果没有查找到所述key对应的链表,则返回处理结果;如果查找到了所述key对应的链表,则之行步骤S3;
S3,根据第二key检索所述key对应的链表,查找所述key对应的数据;
S4,找到所述数据后,更新所述数据的访问时间和访问次数;
S5,返回查找到的所述数据。
进一步地,在步骤S4和S5之间,还包括步骤,
根据所述数据的访问时间和访问次数,判断所述数据在所述key对应的链表中的位置是否需要调整,如果不需要调整,则执行步骤S5;如果需要调整,则调整所述数据在所述key对应的链表中的位置。
其中,所述调整所述数据在所述key对应的链表中的位置,具体为,如果所述数据的访问优先级高于所述链表中的对比数据的访问优先级,则将所述数据移动到该对比数据的前面;如果所述数据的访问优先级低于所述链表中的对比数据的访问优先级,则将所述数据移动到该对比数据的后面。
上述大容量缓存的构建方法,包括如下步骤:
S1,接收数据和key;
S2,根据第一key检索radix tree,查找所述key对应的链表;
S3,根据第二key检索所述key对应的链表,查找所述key对应的数据;如果查找到了所述数据,则放弃所述数据和key;如果没有查找到所述数据,则执行步骤S4-S5;
S4,将所述数据插入到所述key对应的链表中;
S5,更新所述数据的访问时间和访问次数。
进一步地,步骤S5之后,还包括步骤,
根据所述数据的访问时间和访问次数,判断所述数据在所述key对应的链表中的位置是否需要调整,如果不需要调整,则结束;如果需要调整,则调整所述数据在所述key对应的链表中的位置。
其中,所述调整所述数据在所述key对应的链表中的位置,具体为,具体为,如果所述数据的访问优先级高于所述链表中的对比数据的访问优先级,则将所述数据移动到该对比数据的前面;如果所述数据的访问优先级低于所述链表中的对比数据的访问优先级,则将所述数据移动到该对比数据的后面。
本发明的有益效果是:
本发明结合了链表和radix tree这两种数据结构的特点,通过在radix tree的叶子节点上用链表来保存需要检索的实际数据,并将数据的key拆分成两部分:第一部分用于检索radix tree,找到key对应的链表,第二部分用于检索key对应的链表,找到需要检索的实际数据。从而实现了在处理大量数据的时候,既可以快速的检索到数据,又不需要创建大量的管理节点来管理叶子节点,节约了内存空间,提高了内存空间的利用率。
附图说明
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京云巢动脉科技有限公司,未经北京云巢动脉科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410495963.3/2.html,转载请声明来源钻瓜专利网。