CN102819586B - 一种基于高速缓存的url分类方法和设备 - Google Patents

一种基于高速缓存的url分类方法和设备 Download PDF

Info

Publication number
CN102819586B
CN102819586B CN201210269797.6A CN201210269797A CN102819586B CN 102819586 B CN102819586 B CN 102819586B CN 201210269797 A CN201210269797 A CN 201210269797A CN 102819586 B CN102819586 B CN 102819586B
Authority
CN
China
Prior art keywords
node
url
index tree
tree
chained list
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.)
Active
Application number
CN201210269797.6A
Other languages
English (en)
Other versions
CN102819586A (zh
Inventor
刘立公
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
BEIJING NETENTSEC Inc
Original Assignee
BEIJING NETENTSEC Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by BEIJING NETENTSEC Inc filed Critical BEIJING NETENTSEC Inc
Priority to CN201210269797.6A priority Critical patent/CN102819586B/zh
Publication of CN102819586A publication Critical patent/CN102819586A/zh
Application granted granted Critical
Publication of CN102819586B publication Critical patent/CN102819586B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及一种基于高速缓存的URL分类方法和设备,所述高速缓存中存储索引树,所述索引树的树节点中存储URL分类信息,所述方法包括:对所述索引树加上用户态读-拷贝-更新(URCU)读锁;从所述索引树的根节点开始递归匹配所述树节点中存储的URL分类信息与待分类的URL;在所述递归匹配完成后释放对所述索引树的URCU读锁,从而确定待分类的URL的类别。本发明通过采用RCU机制并结合高速缓存中的索引树和多级淘汰链表,支持并发URL查询和不与查询冲突的缓存更新,在不影响查询性能的情况下增加了缓存淘汰效率,降低了计算开销。

Description

一种基于高速缓存的URL分类方法和设备
技术领域
本发明涉及一种基于高速缓存的URL分类方法和设备。
背景技术
上网行为管理指帮助互联网用户控制和管理对互联网的使用,包括对网页访问过滤、网络应用控制、带宽流量管理、信息收发审计、用户行为分析等。URL分类是上网行为管理中的一个主要技术。对于一个给定的URL,现有的分类技术需要经过多次MD5哈希运算和数据库查询操作,才能确定其对应的分类。现有的URL分类技术存在两个缺点,一是MD5哈希运算占用过多CPU资源,经过使用Oprofile评测工具对URL分类操作进行分析,发现MD5运算占据URL分类的1/3时间;二是数据库查询性能不能满足高性能URL分类的要求,随着URL分类数据库规模的扩大,数据库查询性能下降,URL分类的性能将不能满足上网行为设备的需求。经过对一段时间内的共计198118452次URL访问的统计分析,发现绝大部分的URL访问请求是针对小部分的URL进行的,其中,对排名前100000的URL访问次数的总和占总的URL访问次数的83.47%。通过这个统计数据来看,如果把这部分经常访问的URL分类结果保存在缓存中,就可以减少绝大部分的URL分类操作的MD5哈希运算和数据库查询操作,从而提高URL分类整体的性能。
缓存技术是一种通用的技术,从CPU上的L1、L2、L3缓存,到磁盘控制器上的缓存,到操作系统中的文件缓存、到数据库中的各种缓存、到互联网上的Cache Server等等,应用非常广泛,目的都在于用空间换取时间。简言之,如果获取某项数据的开销很大,那么在获取数据后把它暂存一段时间以便能够在后续操作中继续使用它。这样,可以减少后续操作获取这些数据的开销,从总体上看缓存系统能够起到这样的作用,提高数据获取速度。
在URL分类缓存方面,现有技术中存在使用TRIE树结构的缓存方法,URL以TRIE树结构组织,在每个树节点存储一个URL字符,从树根到叶子节点的路径对应于一个完整的URL,缓存查询就是从根节点开始递归匹配URL中的字符直至叶子节点的过程。这种分类机制可以表述为,接收到URL分类请求后,首先查询一个小的常用的URL分类数据库,如果没有查到,则查询TRIE树缓存。在查询TRIE树时,如果没有匹配的URL,则调用URL分类接口,对URL进行MD5运算,然后查找数据库,如果在数据库中找到URL对应的分类,则在TRIE树中创建新的节点,保存URL分类结果。
TRIE树有容量限制,在每次开始查询TRIE树时,首先检测TRIE树容量是否超过限额,如果超过限额则启动TRIE树淘汰过程,使用LRU算法淘汰不常用的节点。在完成TRIE树淘汰过程后再开始进行查询操作。为了减少标准TRIE树节点分支表的内存占用,因为URL中只使用数字、英文字母和部分特殊字符,通过使用多级映射表把TRIE树节点分支表减小为7个分支,减少了TRI E树的内存占用。TRIE树结构的缓存不支持多线程并发查询,不支持更新操作,查询性能在5万条/秒左右。
现有的URL分类和TRIE树缓存有下列缺点:
只对主URL数据库进行了缓存,没有对常用的URL数据库进行缓存,在查询TRIE树缓存前需要先查询一个小的快速分类数据库,而查询这个数据库时也需要进行多次MD5运算。使用缓存并没有减少MD5运算量;TRIE树每个节点只存储一个字符,需要进行多次分支跳转才能完成URL的查找;缓存淘汰逻辑在查询路径实现,影响查询性能;使用时间戳来标识节点的最近访问,开销较大;查询性能随着TRIE树中缓存的URL数量的增加而下降;查询接口不是线程安全的;没有提供增加、删除缓存记录的接口;为了压缩标准TRIE树内存占用而引入的多级映射表技术过于复杂,影响查询性能。
发明内容
本发明的目的是提供一种能够解决上述问题的基于高速缓存的URL分类方法和设备。
在第一方面,本发明提供了一种基于高速缓存的URL分类方法,所述高速缓存中存储索引树,所述索引树的树节点中存储URL分类信息,所述方法包括:对所述索引树加上用户态读-拷贝-更新(URCU)读锁;从所述索引树的根节点开始递归匹配所述树节点中存储的URL分类信息与待分类的URL;在所述递归匹配完成后释放对所述索引树的URCU读锁,从而确定待分类的URL的类别。
在第二方面,本发明提供了一种基于高速缓存的URL分类设备,包括:高速缓存存储器,所述高速缓存存储器中存储索引树,所述索引树的树节点中存储URL分类信息;对所述索引树加上用户态读-拷贝-更新(URCU)读锁的模块;从所述索引树的根节点开始递归匹配所述树节点中存储的URL分类信息与待分类的URL的模块;以及在所述递归匹配完成后释放对所述索引树的URCU读锁,从而确定待分类的URL的类别的模块。
本发明通过采用RCU机制并结合高速缓存中的索引树和多级淘汰链表,支持并发URL查询和不与查询冲突的缓存更新,在不影响查询性能的情况下增加了缓存淘汰效率,降低了计算开销。
附图说明
图1是根据本发明实施例的URL分类高速缓存的数据结构的示意图;
图2是根据本发明实施例的基于高速缓存的URL分类查询的流程图;以及
图3是根据本发明实施例的在高速缓存中添加和删除URL分类的流程图。
具体实施方式
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
图1是根据本发明实施例的URL分类高速缓存的数据结构的示意图。
在高速缓存中缓存的该数据结构包括索引树和多级LRU淘汰链表。
索引树用于存储URL分类信息,从树根至树叶的路径对应一个URL,在树枝和树叶都可以存储URL分类信息。索引树的根节点不存储字符,每个叶节点存储由一个或多个URL字符构成的URL片段。这样,可以从根节点递归匹配树节点的URL片段和输入的URL,以进行URL的分类查询、添加和删除操作。
多级LRU淘汰链表,如图中所示,分别为第一级LRU、第二级LRU、第三级LRU,一直到第n级LRU,LRU是一种名为“最近最少使用”(Least RecentlyUsed)的内存管理算法。每一级的LRU淘汰链表都是一个双向循环链表,即每个数据结点中都有两个指针,分别指向该结点的前驱结点和后续结点。每一级LRU淘汰链表的队头还指向下一级的LRU淘汰链表的队头。每一级淘汰链表都预定了不同的命中次数的阈值,所述命中次数是索引树中的叶节点在所述高速缓存中的被命中次数,即访问次数。命中次数通过计数器来实现,与使用时间戳来标识节点的最近访问相比开销大大减小。应当指出,也可以采用最近最少使用(Least Recently Used,LRU)之外的其他各种各样内存算法来实现多级淘汰链表。
依据上述树形结构中叶节点的缓存命中次数,每个叶节点与不同级别的LRU淘汰链表中的一个结点相链接,各级淘汰链表中的结点所链接的叶节点的命中次数不超过所述命中次数阈值。如图中所示,存储URL字符“ro.baidu.com/”的叶节点被链接到第一级LRU淘汰链表中的一个结点,存储URL字符“m.js”的叶节点被链接到第二级LRU淘汰链表中的一个结点,存储URL字符“.baidu.com/ecom”的叶节点被链接到第三级LRU淘汰链表中的一个结点,诸如此类。例如,可以将访问次数小于10的叶子节点链接到第一级链表,访问次数小于100的被链接到第二级链表,访问次数小于1000的被链接到第三级链接,依此类推。
这样,在进行缓存回收操作时,可以从最少被访问的LRU淘汰链表开始扫描,以删除其命中次数小于当前一级的淘汰链表的命中次数阈值的一个链表结点及其对应的叶节点,从而快速完成缓存回收操作;另外,在缓存回收过程中,还可以根据树节点的命中次数,调整该节点在多级LRU淘汰链表中的位置。
图2是根据本发明实施例的基于高速缓存的URL分类查询的流程图。
在步骤201,针对高速缓存获取用户态读-拷贝更新(user read-copyupdate,URCU)读锁,从而使得对高速缓存的读操作不需要任何锁就可以进行,但是对高速缓存的写操作需要先拷贝副本,对副本进行修改,最后在适当的时机把原数据的指针重新指向被修改的数据。“适当的时机”是指所有引用该数据的CPU都退出对共享数据的操作。
在步骤202,从索引树的根节点开始递归地匹配树节点的URL片段和输入的URL。
在步骤203,在输入的URL在索引树中的匹配最终完成后,释放URCU读锁。
通过上述流程,可以为待分类的URL在索引树中找到相应的URL分类。
图3是根据本发明实施例的在高速缓存中添加和删除URL分类的流程图。
首先,在进行添加、删除URL分类的缓存维护操作时,要从内存中分配一个缓存操作请求结构,然后把这个缓存维护请求插入到无锁请求队列。如果队列中只有一个请求,则使用信号灯通知缓存维护线程开始处理;如果有多个请求,则在队列中按照排队机制等待处理。缓存维护线程被信号灯唤醒后,从无锁请求队列的队头取下一个缓存维护请求。
在步骤300,判断取自无锁请求队列的缓存维护请求是缓存添加请求还是缓存删除请求。
如果该缓存维护请求是缓存添加请求,流程进行到步骤301。
在步骤301,从内存中分配一个新的树节点。
在步骤303,在树中查找与输入的URL最长匹配的树节点,
在步骤305,拷贝一份该树节点的分支表,拷贝形成的分支表为分支表副本,被拷贝的分支表为分支表正本。
在步骤307,把新的树节点添加到分支表副本,其中,在新的树节点中拷贝所述输入的URL在索引树中尚未匹配的URL片段。
在步骤309,调用URCU进行树节点分支表指针替换,即高速缓存的所有读者都释放URCU读锁,高速缓存的写操作(这里所指的缓存添加)才可以进行指针替换/数据修改。
在步骤311,等待一个RCU宽限期,删除该树节点的分支表正本所占用的内存。
如此完成一个树节点的添加操作。
如果该缓存维护请求是缓存删除请求,流程进行到步骤302。
在步骤302,查找与待删除的URL完全匹配的最后树节点。
在步骤304,拷贝该最后树节点的父节点的分支表。拷贝形成的分支表为分支表副本,被拷贝的分支表为分支表正本。
在步骤306,从分支表副本中删除该最后树节点。
在步骤308,调用URCU将所述父节点的分支表指针重新指向分支表副本,即高速缓存的所有读者都释放URCU读锁,高速缓存的写操作(这里所指的缓存删除)才可以进行指针替换/数据修改。
在步骤310,等待一个RCU宽限期,删除分支表正本所占用的内存,删除所述最后树节点所占用的内存。
在本发明的一个实施例中,如果缓存维护请求是缓存添加请求,缓存维护线程还可以在处理该请求之前检查当前索引树中叶节点的数量。如果叶子节点的数量没有超过限额,则直接开始处理;如果叶节点的数量超过限额,则要先从多级LRU淘汰链表中删除不满足条件的叶节点及其对应的链表结点,再进行如图3中所述的缓存添加处理。同时,在检查过程中,还可以对链表结点的位置进行调整,将满足一定条件的链表结点移动到上一级链表中。本领域技术人员应当理解,所述的删除和移动处理不一定是在缓存添加请求之前进行的,也可以定时进行以进行缓存回收和链表调整。
在此,对上一段落所述的从多级LRU淘汰链表中删除不满足条件的叶节点的处理流程做更具体的描述。首先,扫描LRU淘汰链表,从第一级扫描至最高级,在每一级链表中从队头扫描至队尾,依次检查每个链表结点所链接的树节点的访问次数。请注意,无论以何种方式定义/排列多级淘汰链表的级别,扫描顺序始终是从所链接的叶子节点的访问次数少的链表级到所链接的叶子节点的访问次数多的链表级。在扫描中,如果发现某链表结点所链接的树节点的访问次数小于那一级链表允许的次数,则从LRU淘汰链表中删除该链表结点,然后从索引树中删除其对应的叶节点。另外,如果在扫描中发现某链表结点所链接的树节点的访问次数大于该级LRU淘汰链表允许的访问次数,则从该级LRU淘汰链表中删除该节点,然后将其插入上级LRU淘汰链表,即允许访问次数更多的LRU淘汰链表级。
从上文所述可以看出,由于缓存维护操作是在单个维护线程中进行的,所有针对缓存的添加和删除操作都是串行进行的,不需要使用互斥锁;另外,缓存维护请求的入队、出队操作是在无锁队列上进行的,也不需要使用互斥锁。对索引树的更新和对树的查询是使用URCU锁来同步的,由于URCU的存在,从而允许读操作在任何时候都可以无阻碍访问数据,读-拷贝-更新的机制通过延迟写操作实现了缓存查询和缓存维护更新的同步。因此,总体上看本发明的高速URL缓存是用无锁数据结构实现的,系统伸缩性高,系统性能随着CPU个数的增加呈线性增长。
在本发明的一个实施例中,提供了一种基于高速缓存的URL分类设备。
该设备包括:高速缓存存储器,所述高速缓存存储器中存储索引树,所述索引树的树节点中存储URL分类信息;对所述索引树加上用户态读-拷贝-更新(URCU)读锁的模块;从所述索引树的根节点开始递归匹配所述树节点中存储的URL分类信息与待分类的URL的模块;以及在所述递归匹配完成后释放对所述索引树的URCU读锁,从而确定待分类的URL的类别的模块。
所述设备还可以包括缓存维护模块,用于对所述高速缓存进行缓存维护,所述缓存维护遵循URCU机制,在所述释放对所述索引树的URCU读锁之后对所述索引树进行修改。
缓存维护模块包括:缓存添加模块,用于遵循URCU机制在所述高速缓存中存储的索引树上添加URL分类信息,所述添加对索引树的修改是在所述释放对所述索引树的URCU读锁之后进行的;和/或缓存删除模块,用于遵循URCU机制在所述高速缓存中存储的索引树上删除URL分类信息,所述添加对索引树的修改是在所述释放对所述索引树的URCU读锁之后进行的。
遵循URCU机制在所述高速缓存中存储的索引树上添加URL分类信息的具体流程可以如下:从内存中分配一个新的树节点,在所述索引树中查找与待分类URL最长匹配的树节点并拷贝所述树节点的分支表,拷贝形成的分支表为分支表副本,被拷贝的分支表为分支表正本,把所述新的树节点添加到所述分支表副本,调用URCU将所述最后匹配的树节点的分支表指针指向所述分支表副本,等待一个RCU宽限期,删除所述分支表正本占用的内存。
遵循URCU机制在所述高速缓存中存储的索引树上删除URL分类信息的具体流程可以如下:在所述索引树中查找与待删除URL完成匹配的最后树节点并拷贝其父节点的分支表,拷贝形成的分支表为分支表副本,被拷贝的分支表为分支表正本,从所述分支表副本中删除所述最后树节点,调用URCU将所述父节点的分支表指针指向所述分支表副本,等待一个RCU宽限期,删除所述分支表正本占用的内存,删除所述最后树节点占用的内存。
所述高速缓存存储器还可以存储一个多级淘汰链表和计数器。多级淘汰链表的各级淘汰链表可以是双向循环链表并且预定不同的命中次数阈值,索引树的各叶节点分别与所述淘汰链表的一个链表结点相链接,叶节点在所述高速缓存中的被命中次数不超过其链接的当前级链表的命中次数阈值。例如,可以将访问次数小于10的叶子节点链接到第一级链表,访问次数小于100的被链接到第二级链表,访问次数小于1000的被链接到第三级链接,依此类推。叶节点在所述高速缓存中的被命中次数通过计数器计数得到,与使用时间戳来标识节点的最近访问相比开销大大减小。在这种情况下,根据本发明的设备还可以包括:通过扫描所述多级淘汰链表,根据所述被命中次数和所述命中次数阈值的关系在所述高速缓存中进行缓存回收和链表结点位置调整的模块。应当指出,可以采用诸如最近最少使用(Least Recently Used,LRU)之类的各种各样内存算法来实现多级淘汰链表。
在所述高速缓存中进行缓存回收和链表结点位置调整的具体流程如下:可以从最少被访问(其命中次数阈值最小)的淘汰链表开始扫描,检查所述索引树的叶节点的数量;如果所述数量超过预定阈值,则通过扫描所述淘汰链表,依次检查所述淘汰链表中每个链表结点所链接的叶节点的被命中次数;如果当前链表结点所链接的叶节点的被命中次数不超过当前级链表的命中次数阈值,则删除当前链表结点并且从所述索引树中删除当前链表结点所链接的叶节点,从而快速完成缓存回收操作;另外,在缓存回收过程中,如果发现前链表结点所链接的叶节点的被命中次数超过当前级链表的命中次数阈值,则可以将所述当前链表结点的位置移动到上一级淘汰链表。
专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (12)

1.一种基于高速缓存的URL分类方法,所述高速缓存中存储索引树,所述索引树的树节点中存储URL分类信息,所述方法包括:对所述索引树加上用户态读-拷贝-更新URCU读锁;从所述索引树的根节点开始递归匹配所述树节点中存储的URL分类信息与待分类的URL;在所述递归匹配完成后释放对所述索引树的URCU读锁,从而确定待分类的URL的类别;
其中,对所述高速缓存进行缓存维护,所述缓存维护遵循URCU机制,在所述释放对所述索引树的URCU读锁之后对所述索引树进行修改。
2.根据权利要求1所述的方法,其中,对所述高速缓存进行缓存维护之前先发出缓存维护请求,将所述缓存维护请求插入无锁请求队列中等待处理。
3.根据权利要求1所述的方法,所述缓存维护包括:
遵循URCU机制在所述高速缓存中存储的索引树上添加URL分类信息,所述添加对索引树的修改是在所述释放对所述索引树的URCU读锁之后进行的;和/或
遵循URCU机制在所述高速缓存中存储的索引树上删除URL分类信息,所述添加对索引树的修改是在所述释放对所述索引树的URCU读锁之后进行的。
4.根据权利要求3所述的方法,其中,遵循URCU机制在所述高速缓存中存储的索引树上添加URL分类信息的步骤包括:
从内存中分配一个新的树节点,在所述索引树中查找与待分类URL最长匹配的树节点并拷贝所述树节点的分支表,拷贝形成的分支表为分支表副本,被拷贝的分支表为分支表正本,把所述新的树节点添加到所述分支表副本,调用URCU将所述最长匹配的树节点的分支表指针指向所述分支表副本,等待一个RCU宽限期,删除所述分支表正本占用的内存。
5.根据权利要求3所述的方法,其中,遵循URCU机制在所述高速缓存中存储的索引树上删除URL分类信息的步骤包括:
在所述索引树中查找与待删除URL完成匹配的最后树节点并拷贝其父节点的分支表,拷贝形成的分支表为分支表副本,被拷贝的分支表为分支表正本,从所述分支表副本中删除所述最后树节点,调用URCU将所述父节点的分支表指针指向所述分支表副本,等待一个RCU宽限期,删除所述分支表正本占用的内存,删除所述最后树节点占用的内存。
6.根据权利要求1所述的方法,其中,所述分类信息是URL字符,所述索引树的根节点不存储URL字符,其他树节点存储一个或多个URL字符。
7.根据权利要求1所述的方法,其中,所述高速缓存中还存储多级淘汰链表,多级淘汰链表中的各级淘汰链表是双向循环链表并且预定不同的命中次数阈值,索引树的各叶节点分别与所述淘汰链表的一个链表结点相链接,叶节点在所述高速缓存中的被命中次数不超过其链接的当前级链表的命中次数阈值,所述方法还包括:通过扫描所述多级淘汰链表,根据所述被命中次数和所述命中次数阈值的关系在所述高速缓存中进行缓存回收和链表结点位置调整。
8.根据权利要求7所述的方法,其中,在所述高速缓存中进行缓存回收和链表结点位置调整的步骤包括:
检查所述索引树的叶节点的数量;
如果所述数量超过预定阈值,则从命中次数阈值最小的一级淘汰链表开始扫描所述多级淘汰链表,依次检查所述淘汰链表中每个链表结点所链接的叶节点的被命中次数;
如果当前链表结点所链接的叶节点的被命中次数不超过当前级链表的命中次数阈值,则删除当前链表结点并且从所述索引树中删除当前链表结点所链接的叶节点;
如果当前链表结点所链接的叶节点的被命中次数超过当前级链表的命中次数阈值,则将所述当前链表结点的位置移动到上一级淘汰链表。
9.一种基于高速缓存的URL分类设备,包括:
存储模块,用于存储索引树,所述索引树的树节点中存储URL分类信息;
用于对所述索引树加上用户态读-拷贝-更新URCU读锁的模块;
用于从所述索引树的根节点开始递归匹配所述树节点中存储的URL分类信息与待分类的URL的模块;以及
用于在所述递归匹配完成后释放对所述索引树的URCU读锁,从而确定待分类的URL的类别的模块;
缓存维护模块,用于对所述高速缓存进行缓存维护,所述缓存维护遵循URCU机制,在所述释放对所述索引树的URCU读锁之后对所述索引树进行修改。
10.根据权利要求9所述的设备,其中,所述缓存维护模块包括:
缓存添加模块,用于遵循URCU机制在所述存储模块中存储的索引树上添加URL分类信息,所述添加对索引树的修改是在所述释放对所述索引树的URCU读锁之后进行的;和/或
缓存删除模块,用于遵循URCU机制在所述存储模块中存储的索引树上删除URL分类信息,所述添加对索引树的修改是在所述释放对所述索引树的URCU读锁之后进行的。
11.根据权利要求9所述的设备,其中,所述存储模块还用于存储多级淘汰链表,多级淘汰链表中的各级淘汰链表是双向循环链表并且预定不同的命中次数阈值,索引树的各叶节点分别与所述淘汰链表的一个链表结点相链接,叶节点在所述高速缓存中的被命中次数不超过其链接的当前级链表的命中次数阈值,所述设备还包括:通过扫描所述多级淘汰链表,根据所述被命中次数和所述命中次数阈值的关系在所述高速缓存中进行缓存回收和链表结点位置调整的模块。
12.根据权利要求9所述的设备,还包括:
计数模块,用于对叶节点在所述存储模块中的被命中次数进行计数。
CN201210269797.6A 2012-07-31 2012-07-31 一种基于高速缓存的url分类方法和设备 Active CN102819586B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210269797.6A CN102819586B (zh) 2012-07-31 2012-07-31 一种基于高速缓存的url分类方法和设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210269797.6A CN102819586B (zh) 2012-07-31 2012-07-31 一种基于高速缓存的url分类方法和设备

Publications (2)

Publication Number Publication Date
CN102819586A CN102819586A (zh) 2012-12-12
CN102819586B true CN102819586B (zh) 2015-10-07

Family

ID=47303697

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210269797.6A Active CN102819586B (zh) 2012-07-31 2012-07-31 一种基于高速缓存的url分类方法和设备

Country Status (1)

Country Link
CN (1) CN102819586B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110020272A (zh) * 2017-08-14 2019-07-16 中国电信股份有限公司 缓存方法、装置以及计算机存储介质

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103136372B (zh) * 2013-03-21 2016-03-02 陕西通信信息技术有限公司 网络可信性行为管理中url快速定位、分类和过滤方法
CN103927325B (zh) * 2014-03-13 2017-06-27 中国联合网络通信集团有限公司 一种对url进行分类的方法及装置
CN104933363B (zh) * 2015-06-19 2018-09-11 安一恒通(北京)科技有限公司 检测恶意文件的方法和装置
CN106657196B (zh) * 2015-11-02 2020-07-24 华为技术有限公司 一种缓存内容淘汰方法及缓存装置
CN110955614B (zh) * 2018-09-26 2022-05-03 Oppo广东移动通信有限公司 文件缓存的回收方法、装置、存储介质及终端
CN109543080B (zh) * 2018-12-04 2020-11-06 北京字节跳动网络技术有限公司 一种缓存数据处理方法、装置、电子设备及存储介质
CN111290305B (zh) * 2018-12-06 2021-05-04 航天科工惯性技术有限公司 多套惯导系统多路数字量采集与处理防冲突方法及系统
CN110138880A (zh) * 2019-06-04 2019-08-16 杭州安恒信息技术股份有限公司 基于云平台缓存提升访问速率的方法和装置
CN110489601B (zh) * 2019-07-18 2022-09-16 国电南瑞科技股份有限公司 一种基于缓存机制的实时数据索引快速动态更新方法
CN111522509B (zh) * 2020-04-20 2023-06-09 上海霄云信息科技有限公司 分布式存储系统的缓存方法及设备
CN114791913A (zh) * 2022-04-26 2022-07-26 北京人大金仓信息技术股份有限公司 数据库的共享内存缓冲池处理方法、存储介质与设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1522542A (zh) * 2001-07-06 2004-08-18 �ʼҷ����ֵ������޹�˾ 用于运动或深度估计的方法和装置和配备这种运动估计装置的图像处理设备
CN101340363A (zh) * 2007-12-24 2009-01-07 中国科学技术大学 一种实现多元数据包分类的方法及设备
CN102306204A (zh) * 2011-09-28 2012-01-04 武汉大学 基于文本结构权重的主题区域识别方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1522542A (zh) * 2001-07-06 2004-08-18 �ʼҷ����ֵ������޹�˾ 用于运动或深度估计的方法和装置和配备这种运动估计装置的图像处理设备
CN101340363A (zh) * 2007-12-24 2009-01-07 中国科学技术大学 一种实现多元数据包分类的方法及设备
CN102306204A (zh) * 2011-09-28 2012-01-04 武汉大学 基于文本结构权重的主题区域识别方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
分布式GRE隧道实现;丁伟;《西安电子科技大学工程硕士学位论文》;20120331;正文第43-44页、第50页 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110020272A (zh) * 2017-08-14 2019-07-16 中国电信股份有限公司 缓存方法、装置以及计算机存储介质

Also Published As

Publication number Publication date
CN102819586A (zh) 2012-12-12

Similar Documents

Publication Publication Date Title
CN102819586B (zh) 一种基于高速缓存的url分类方法和设备
US11238098B2 (en) Heterogenous key-value sets in tree database
US20040205044A1 (en) Method for storing inverted index, method for on-line updating the same and inverted index mechanism
CN102521405B (zh) 支持高速加载的海量结构化数据存储、查询方法和系统
CN110162528A (zh) 海量大数据检索方法及系统
US10769126B1 (en) Data entropy reduction across stream shard
CN109947668A (zh) 存储数据的方法和装置
Ozcan et al. A five-level static cache architecture for web search engines
US20130191523A1 (en) Real-time analytics for large data sets
CN108140040A (zh) 存储器中数据库的选择性数据压缩
US11321315B2 (en) Methods and systems for database optimization
CN110188080A (zh) 基于客户端高效缓存的远程文件数据访问性能优化方法
CN103176754A (zh) 一种海量小文件读取存储方法
CN105117417A (zh) 一种读优化的内存数据库Trie树索引方法
CN109344157A (zh) 读写分离方法、装置、计算机设备及存储介质
Alici et al. Timestamp-based result cache invalidation for web search engines
CN108647266A (zh) 一种异构数据快速分布存储、交互方法
CN105159845A (zh) 存储器读取方法
CN107368608A (zh) 基于arc替换算法的hdfs小文件缓存管理方法
JP3499105B2 (ja) 情報検索方法および情報検索装置
CN109981659A (zh) 基于数据去重技术的网络资源预取方法以及系统
CN106155934A (zh) 一种云环境下基于重复数据的缓存方法
CN104375782A (zh) 千万级小文件数据的一种读写解决方法
Ozcan et al. Second chance: A hybrid approach for dynamic result caching and prefetching in search engines
CN107659626A (zh) 面向临时元数据的分离存储方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant