一种数据处理方法及设备的制造方法
【专利摘要】本发明提供一种数据处理方法及设备,通过建立双链表,将哈希表中的存储节点与双链表中的存储节点一一对应,对哈希表中的存储节点根据存储时间由先到后进行排序得到存储节点序列,并根据存储节点序列的排序遍历其中的存储节点,通过判断存储节点是否超时,在哈希表和双链表中删除超时存储节点对应的记录,实现哈希表中过期数据的清理。一旦在双链表中发现未超时的存储节点,则结束遍历,保证了哈希表中未遍历的存储节点一定是未超时节点,因此,无需遍历双链表中全部的存储节点,相应的也没有遍历哈希表中的全部存储节点,从而缩短哈希表的数据清理的时间,提高系统处理速度。
【专利说明】
_种数据处理方法及设备
技术领域
[0001 ]本发明涉及数据库技术领域,具体涉及一种数据处理方法及设备。
【背景技术】
[0002]哈希表(Hash),又称散列表,是一种利用键值对存储并检索数据的一种非线性数据结构。在线性表、树等数据结构中,数据存储位置是随机的,因此在数据结构中查找记录时,都需要进行一系列关键字的比较工作,当表数据量较大时会对系统处理性能有较大负面影响,这种负面影响随着数据量的增加而线性增大。相较于线性表、树等数据结构,哈希表不需要进行比较即可直接取得所查记录。具体而言,哈希表在记录的存储位置和它的关键字之间建立一个对应关系f,使每个关键字与其存储位置相对应,在查找时,只要根据这个对应关系f找到给定值K的像f(k)。若哈希中存在关键字和K匹配的记录,则必定在f(k)的存储位置上,由此不需要进行比较便可直接取得所查记录。
[0003]对电信级的业务来讲,哈希表的容量大小需要根据现网的流量状况和用户数情况来做相应配置,但仍需要通过一定的遍历策略来避免哈希表存满的状况发生。由于哈希表是一种内存连续的数据结构,目前,通常按照存储的位置进行遍历,来清理哈希表中的过期数据。这种数据清理方法虽然最为直接且简单,但是,需要遍历哈希表中所有的数据才能实现,对于电信业务来说,哈希表较大,数据量较大,数据遍历过程会对处理性能产生较大影响,在处理大数据量时很容易产生性能瓶颈。
【发明内容】
[0004]本发明实施例提供一种数据处理方法及设备,用以至少部分解决在哈希表容量较大的情况下,进行数据清理时哈希表遍历耗费时间长,影响系统处理性能的问题。
[0005]为了实现上述目的,本发明实施例采用以下技术手段:
[0006]本发明实施例提供一种数据处理方法,所述方法应用于数据处理设备,数据处理设备中预设有用于记录存储节点的关键字和存储位置的对应关系的哈希表,所述数据处理设备中还预设有双链表,双链表用于记录根据存储时间由先到后进行排序的存储节点序列,存储节点序列中的存储节点为哈希表中的存储节点,所述方法包括:
[0007]当预设的维护周期到达时,根据存储节点序列的排序遍历存储节点序列中的存储节点;在遍历过程中,判断存储节点是否超时,若存储节点超时,则在双链表中删除当前的存储节点,并在哈希表中删除所述存储节点的关键字与数据存储位置的对应关系;若存储节点未超时,则结束遍历。
[0008]优选的,所述判断存储节点是否超时,具体包括:
[0009]计算存储节点的存储时间与当前时间之间的时间差;
[0010]将所述时间差与预设的阈值相比较,若所述时间差大于所述阈值,则所述存储节点超时;若所述时间差小于或等于所述阈值,则所述存储节点未超时。
[0011]优选的,所述根据存储节点序列的排序遍历存储节点序列中的存储节点,具体包括:
[0012]根据存储节点序列的排序,由前至后遍历存储节点序列中的存储节点。
[0013]优选的,所述双链表中设置有向后指针和尾指针,尾指针指向存储节点序列中的最末的存储节点;
[0014]所述在双链表中删除当前存储节点,具体包括:在双链表中删除当前存储节点,并将向后指针指向存储节点序列中已删除的存储节点的下一个存储节点;
[0015]所述根据存储节点序列的排序遍历存储节点序列中的存储节点,具体包括:
[0016]判断向后指针指向的存储节点是否与尾指针指向的存储节点相同,若不同,贝Ij在判断出向后指针当如指向的存储节点超时后,将向后指针指向下存储节点;右相冋,则判断尾指针指向的存储节点是否超时。
[0017]优选的,所述双链表中还设置有头指针,头指针指向存储节点序列中的首个存储节点;
[00? 8]在判断出存储节点未超时之后、结束遍历之前,所述方法还包括:将头指针指向所述存储节点。
[0019]进一步的,所述数据处理方法还包括:
[0020]当接收到数据存储请求时,计算数据存储位置,并根据所述数据存储位置存储数据;在所述哈希表中写入所述数据对应的存储节点的关键字与存储位置的对应关系;在所述双链表中存储节点序列的尾部记录所述存储节点的存储位置,并记录所述存储节点的存储时间;
[0021 ]当接收到数据删除请求时,在所述哈希表中删除相应存储节点的关键字与数据存储位置的对应关系,并在所述双链表的存储节点序列中删除相应记录。
[0022]本发明实施例还提供一种数据处理设备,包括:存储模块、遍历模块、判断模块、双链表维护模块和哈希表维护模块;
[0023]所述存储模块用于,存储用于记录存储节点的关键字和存储位置的对应关系的哈希表,以及存储双链表,双链表用于记录根据存储时间由先到后进行排序的存储节点序列,存储节点序列中的存储节点为哈希表中的存储节点;
[0024]所述遍历模块用于,当预设的维护周期到达时,根据存储节点序列的排序遍历存储节点序列中的存储节点;
[0025]所述判断模块用于,在遍历过程中,判断存储节点是否超时,当存储节点超时时,指示所述双链表维护模块在双链表中删除当前的存储节点,并指示所述哈希表维护模块在哈希表中删除所述存储节点的关键字与数据存储位置的对应关系;以及,当存储节点未超时时,结束遍历。
[0026]优选的,所述判断模块具体用于,计算存储节点的存储时间与当前时间之间的时间差,并将所述时间差与预设的阈值相比较,当所述时间差大于所述阈值时,所述存储节点超时;当所述时间差小于或等于所述阈值,所述存储节点未超时。
[0027]优选的,所述遍历模块具体用于,根据存储节点序列的排序,由前至后遍历存储节点序列中的存储节点。
[0028]优选的,所述双链表中设置有向后指针和尾指针,尾指针指向存储节点序列中的最末的存储节点;
[0029]所述双链表维护模块具体用于,在双链表中删除当前存储节点,并将向后指针指向存储节点序列中已删除的存储节点的下一个存储节点;
[0030]所述遍历模块具体用于,判断向后指针指向的存储节点是否与尾指针指向的存储节点相同,若不同,则在判断出向后指针当前指向的存储节点超时后,将向后指针指向下一个存储节点;若相同,则判断尾指针指向的存储节点是否超时。
[0031]优选的,所述双链表中还设置有头指针,头指针指向存储节点序列中的首个存储节点;
[0032]所述遍历模块还用于,在判断出存储节点未超时之后、结束遍历之前,将头指针指向所述存储节点。
[0033]进一步的,所述数据处理设备还包括接收模块和数据更新模块;
[0034]所述接收模块用于,接收数据存储请求和数据删除请求;
[0035]所述数据更新模块用于,在所述接收模块接收到数据存储请求时,计算数据存储位置,并根据所述数据存储位置存储数据;指示所述哈希表维护模块在所述哈希表中写入所述数据对应的存储节点的关键字与存储位置的对应关系;指示所述双链表维护模块在所述双链表中存储节点序列的尾部记录所述存储节点,并记录所述存储节点的存储时间;以及,在所述接收模块接收到数据删除请求时,指示所述哈希表维护模块在所述哈希表中删除相应存储节点的关键字与数据存储位置的对应关系,并指示所述双链表维护模块在所述双链表的存储节点序列中删除相应存储节点。
[0036]与现有技术相比,本发明的上述实施例具有以下有益技术效果:
[0037]本发明通过建立双链表,将哈希表中的存储节点与双链表中的存储节点一一对应,对哈希表中的存储节点根据存储时间由先到后进行排序得到存储节点序列,并根据存储节点序列的排序遍历其中的存储节点,通过判断存储节点是否超时,在哈希表和双链表中删除超时存储节点对应的记录,实现哈希表中过期数据的清理。由于存储节点序列是根据存储节点的存储时间由先到后排序形成的,一旦在双链表中发现未超时的存储节点,则排在该存储节点之后的存储节点必然是未超时的存储节点,因此可以结束遍历,这样保证了哈希表中未遍历的存储节点一定是未超时节点。按照本发明方案对哈希表进行数据清理,无需遍历双链表中全部的存储节点,相应的也没有遍历哈希表中的全部存储节点,从而缩短哈希表的数据清理的时间,提高系统处理速度,尤其适用于对数据时效性要求较高的场景。
【附图说明】
[0038]图1为本发明实施例的数据处理流程示意图;
[0039]图2为本发明实施例的数据存储流程示意图;
[0040]图3为本发明实施例的数据删除流程示意图;
[0041 ]图4为本发明实施例的数据处理设备的结构示意图。
【具体实施方式】
[0042]针对现有技术存在的上述问题,本发明实施例提供了一种数据处理方案,通过建立双链表,对哈希表中的存储节点根据存储时间由先到后进行排序,得到存储节点序列,并为每个哈希表设定一个时间阈值,如果一个存储节点在哈希表和双链表中存在时长大于该时间阈值,则将其视作“超时”,令其出表,根据存储节点序列的排序遍历存储节点,从而实现哈希表中过期数据的清理。
[0043]本发明提供的数据处理方法,应用于数据处理设备,数据处理设备中预设有哈希表,哈希表用于记录存储节点的关键字和存储位置的对应关系。所述数据处理设备中还预设有双链表,双链表用于记录根据存储时间由先到后进行排序的存储节点序列,存储节点序列中的存储节点为哈希表中的存储节点,也就是说,双链表的存储节点序列中的存储节点与哈希表中的存储节点一一对应。进一步的,双链表中还记录有各个存储节点的入表时间,入表时间是指数据存储的时间,也即存储节点在哈希表和双链表中的入表时间。哈希表与双链表均存储在数据处理设备的存储模块内,哈希表与双链表的关联关系通过存储节点的存储位置建立形成。
[0044]所述数据处理方法包括以下步骤:
[0045]当预设的维护周期到达时,根据存储节点序列的排序遍历存储节点序列中的存储节点。所述维护周期可以根据应用场景的需求进行设置。
[0046]优选的,可以根据存储节点序列的排序,由前至后遍历双链表中存储节点序列中的存储节点。
[0047]需要说明的是,存储节点的遍历方式不限于从存储节点序列的首个节点开始由前至后遍历,也可以从存储节点序列的末节点开始由后至前遍历,也可以从存储节点序列中间任意一个存储节点开始向前或向后遍历。在本发明中,以从首个节点开始由前至后遍历双链表中存储节点序列中的存储节点为例进行说明。
[0048]在遍历过程中,判断存储节点是否超时,若存储节点超时,则在双链表中删除当前的存储节点,并在哈希表中删除所述存储节点的关键字与数据存储位置的对应关系;若存储节点未超时,则结束遍历。
[0049]本发明通过建立双链表,将哈希表中的存储节点与双链表中的存储节点一一对应,对哈希表中的存储节点根据存储时间由先到后进行排序得到存储节点序列,并根据存储节点序列的排序遍历其中的存储节点,通过判断存储节点是否超时,在哈希表和双链表中删除超时存储节点对应的记录,实现哈希表中过期数据的清理。由于存储节点序列是根据存储节点的存储时间由先到后排序形成的,一旦在双链表中发现未超时的存储节点,则排在该存储节点之后的存储节点必然是未超时的存储节点,因此可以结束遍历,这样保证了哈希表中未遍历的存储节点必然是未超时节点。按照本发明方案对哈希表进行数据清理,无需遍历双链表中全部的存储节点,相应的,也没有遍历哈希表中的全部存储节点,从而缩短哈希表的数据清理的时间,提高系统处理速度,尤其适用于对数据时效性要求较高的场景。
[0050]需要说明的是,在数据处理设备的存储模块中存储有阈值,该阈值用于判断存储节点是否超时,该阈值可以根据应用场景的需要进行设置。在本发明中,通过比较存储节点的存储时间与当前时间之间的时间差和阈值,来判断该存储节点是否超时,具体实现过程后续再详细说明。
[0051]为了清楚说明本发明的技术方案,以下结合图1,以从首个存储节点开始由前至后遍历双链表中存储节点序列中的存储节点为例,进行详细说明本发明的数据处理流程。
[0052]所述双链表中设置有头指针、向后指针和尾指针,头指针指向存储节点序列中的首个存储节点,尾指针指向存储节点序列中的最末的存储节点,向后指针用于在存储节点遍历过程中指向当前存储节点的下一个存储节点。
[0053]如图1所示,所述数据处理流程包括以下步骤:
[0054]步骤101,计算存储节点序列中首个存储节点的存储时间与当前时间之间的时间差。
[0055]具体的,数据处理设备获取双链表中储节点序列的首个存储节点的存储时间,并计算该存储时间与当前时间的时间差。
[0056]步骤102,将所述时间差与预设的阈值相比较,若所述时间差大于所述阈值,则执行步骤104;若所述时间差小于或等于所述阈值,则执行步骤103。
[0057]具体的,若所述时间差大于所述阈值,说明该存储节点的入表时间过长,为超时节点(对应的数据为过期数据),因此,可以在双链表和哈希表中删除该存储节点对应的记录(即执行步骤104和105),从而实现过期数据清理,减小哈希表的容量。
[0058]若所述时间差小于或等于所述阈值,说明该存储节点的入表时间不长,为未超时节点(对应的数据为非过期数据)。由于存储节点序列是根据存储节点的存储时间由先到后排序形成的,因此,排在未超时的存储节点之后的存储节点必然也是未超时的存储节点,因此可以结束遍历(即执行步骤103)。
[0059]步骤103,结束流程。
[0060]具体的,当数据处理设备判断出双链表中当前的存储节点为未超时节点时,可以结束本流程,由于此时只遍历了双链表中的首个存储节点,且首个存储节点未超时,因此,可以直接结束流程,无需移动头指针和向后指针。
[0061 ]步骤104,在双链表中删除当前存储节点。
[0062]具体的,当数据处理设备判断出双链表中当前的存储节点为超时节点时,在双链表中删除当前存储节点,并移动向后指针,即将向后指针指向存储节点序列中该存储节点(即已删除的存储节点)的下一个存储节点,从而实现由前至后遍历。
[0063 ]步骤105,在哈希表中删除所述存储节点的关键字与数据存储位置的对应关系。
[0064]具体的,数据处理设备在哈希表中删除所述超时节点对应的记录(即关键字与数据存储位置的对应关系),从而实现哈希表中过期数据的清理。
[0065]步骤106,判断存储节点序列中下一个存储节点是否为末节点,若是末节点,则计算所述末存储节点的存储时间与当前时间之间的时间差,并执行步骤102;若不是末节点,则计算所述下一个存储节点的存储时间与当前时间之间的时间差,并执行步骤102。
[0066]具体的,数据处理设备判断向后指针指向的存储节点是否与尾指针指向的存储节点相同,若不同,说明所述下一个存储节点不是末节点,则按照步骤102判断所述下一个存储节点(即向后指针当前指向的存储节点)是否为超时节点,根据判断结果进行相应处理,并将向后指针指向下一个存储节点。
[0067]若向后指针当前指向的存储节点与尾指针指向的存储节点相同,说明所述下一个存储节点即为末节点,则按照步骤102判断该末节点(尾指针指向的存储节点)是否为超时节点,以及根据判断结果进行相应处理。
[0068]需要说明的是,当数据处理设备判断出双链表中当前的存储节点为未超时节点,且该当前的存储节点不是存储节点序列中的首个存储节点时,在步骤103中,在结束流程之前,需要移动头指针,将头指针指向当前的未超时的存储节点。需要注意的是,若判断出存储节点为超时节点,并在双链表中删除该超时节点对应的记录后,先不移动头指针,而是直到判断出未超时节点时,在结束流程之前才将头指针指向当前的未超时的存储节点。
[0069 ]尾指针在有新的存储节点入表时才发生移动,指向最新入表的存储节点。
[0070]通过上述步骤101-106可以看出,本发明通过设置双链表,用双链表记录哈希表中键值对之间的时间先后次序关系,在每一次执行入表操作时更新存储节点在双链表的位置,从而使哈希表的存储节点通过双链表实现了根据时间排序。在进行遍历操作时,根据双链表中存储节点序列的顺序,从时间最早的存储节点依次遍历,直到遍历到未超时的存储节点时结束遍历,这样,在每一次遍历的过程中无须遍历全表,可以极大的提升性能。
[0071]采用本发明的数据处理方法清理哈希表中的过期数据,按照哈希表入表的时间顺序遍历存储节点,这种遍历方式正是在信令流量采集与分析的应用场景下所需要的,可以快速遍历哈希表,将超时的存储节点移除哈希表,避免哈希表存满的状况发生,保证了系统运行的稳定性和健壮性,尤其适用于对数据时效性要求较高的场景。
[0072]进一步的,在数据存储和数据删除过程中,需要更新哈希表和双链表中的记录,以下分别结合图2和图3分别详细说明数据存储流程和数据删除流程。
[0073]如图2所示,所述数据存储流程可以包括以下步骤:
[0074]步骤201,接收数据存储请求。
[0075]步骤202,计算数据存储位置,并根据所述数据存储位置存储数据。
[0076]具体的,数据处理设备根据哈希算法计算数据存储位置,并根据计算出的数据存储位置存储数据,数据存储位置的计算过程属于现有技术,在此不再赘述。
[0077]步骤203,在哈希表中写入所述数据对应的存储节点的关键字与存储位置的对应关系。
[0078]具体的,数据处理设备通过在哈希表中写入所述数据对应的存储节点的关键字与存储位置的对应关系,实现在哈希表中插入键值对,该过程属于现有技术,在此不再赘述。
[0079]步骤204,在双链表中存储节点序列的尾部记录所述存储节点的存储位置,并记录所述存储节点的存储时间。
[0080]也就是说,在哈希表中,通过存储位置表示存储节点,存储节点序列表现为存储位置的序列。
[0081]如图3所示,所述数据删除流程可以包括以下步骤:
[0082]步骤301,接收数据删除请求。
[0083]步骤302,在哈希表中删除待删除数据对应的存储节点的关键字与数据存储位置的对应关系。
[0084]具体的,删除哈希表中记录的具体实现方式属于现有技术,在此不再赘述。
[0085]步骤303,在双链表的存储节点序列中删除相应记录。
[0086]具体的,数据处理设备根据待删除数据的存储位置,在双链表的存储节点序列中定位,并删除相应的记录。
[0087]基于相同的技术构思,本发明实施例还提供一种数据处理设备,如图4所示,该数据存储设备可以包括:存储模块41、遍历模块42、判断模块43、双链表维护模块44和哈希表维护模块45。
[0088]存储模块41用于,存储用于记录存储节点的关键字和存储位置的对应关系的哈希表,以及存储双链表,双链表用于记录根据存储时间由先到后进行排序的存储节点序列,存储节点序列中的存储节点为哈希表中的存储节点。
[0089]遍历模块42用于,当预设的维护周期到达时,根据存储节点序列的排序遍历存储节点序列中的存储节点。
[0090]判断模块43用于,在遍历过程中,判断存储节点是否超时,当存储节点超时时,指示双链表维护模块44在双链表中删除当前的存储节点,并指示哈希表维护模块45在哈希表中删除所述存储节点的关键字与数据存储位置的对应关系;以及,当存储节点未超时时,结束遍历。
[0091]具体的,判断模块43具体用于,计算存储节点的存储时间与当前时间之间的时间差,并将所述时间差与预设的阈值相比较,当所述时间差大于所述阈值时,所述存储节点超时;当所述时间差小于或等于所述阈值,所述存储节点未超时。
[0092]具体的,遍历模块42具体用于,根据存储节点序列的排序,由前至后遍历存储节点序列中的存储节点。
[0093]优选的,所述双链表中设置有向后指针和尾指针,尾指针指向存储节点序列中的最末的存储节点。
[0094]双链表维护模块44具体用于,在双链表中删除当前存储节点,并将向后指针指向存储节点序列中已删除的存储节点的下一个存储节点。
[0095]遍历模块42具体用于,判断向后指针指向的存储节点是否与尾指针指向的存储节点相同,若不同,则在判断出向后指针当前指向的存储节点超时后,将向后指针指向下一个存储节点;若相同,则判断尾指针指向的存储节点是否超时。
[0096]优选的,双链表中还设置有头指针,头指针指向存储节点序列中的首个存储节点。
[0097]遍历模块42还用于,在判断出存储节点未超时之后、结束遍历之前,将头指针指向所述存储节点。
[0098]进一步的,所述数据处理设备还包括:接收模块46和数据更新模块47。
[0099]接收模块46用于,接收数据存储请求和数据删除请求。
[0100]数据更新模块47用于,在接收模块46接收到数据存储请求时,计算数据存储位置,并根据所述数据存储位置存储数据;指示哈希表维护模块45在所述哈希表中写入所述数据对应的存储节点的关键字与存储位置的对应关系;指示双链表维护模块44在所述双链表中存储节点序列的尾部记录所述存储节点,并记录所述存储节点的存储时间;以及,在接收模块46接收到数据删除请求时,指示哈希表维护模块45在所述哈希表中删除相应存储节点的关键字与数据存储位置的对应关系,并指示双链表维护模块44在所述双链表的存储节点序列中删除相应存储节点。
[0101]可以理解的是,以上实施方式仅仅是为了说明本发明的原理而采用的示例性实施方式,然而本发明并不局限于此。对于本领域内的普通技术人员而言,在不脱离本发明的精神和实质的情况下,可以做出各种变型和改进,这些变型和改进也视为本发明的保护范围。
【主权项】
1.一种数据处理方法,所述方法应用于数据处理设备,数据处理设备中预设有用于记录存储节点的关键字和存储位置的对应关系的哈希表,其特征在于,所述数据处理设备中还预设有双链表,双链表用于记录根据存储时间由先到后进行排序的存储节点序列,存储节点序列中的存储节点为哈希表中的存储节点,所述方法包括: 当预设的维护周期到达时,根据存储节点序列的排序遍历存储节点序列中的存储节点;在遍历过程中,判断存储节点是否超时,若存储节点超时,则在双链表中删除当前的存储节点,并在哈希表中删除所述存储节点的关键字与数据存储位置的对应关系;若存储节点未超时,则结束遍历。2.如权利要求1所述的方法,其特征在于,所述判断存储节点是否超时,具体包括: 计算存储节点的存储时间与当前时间之间的时间差; 将所述时间差与预设的阈值相比较,若所述时间差大于所述阈值,则所述存储节点超时;若所述时间差小于或等于所述阈值,则所述存储节点未超时。3.如权利要求1所述的方法,其特征在于,所述根据存储节点序列的排序遍历存储节点序列中的存储节点,具体包括: 根据存储节点序列的排序,由前至后遍历存储节点序列中的存储节点。4.如权利要求3所述的方法,其特征在于,所述双链表中设置有向后指针和尾指针,尾指针指向存储节点序列中的最末的存储节点; 所述在双链表中删除当前存储节点,具体包括:在双链表中删除当前存储节点,并将向后指针指向存储节点序列中已删除的存储节点的下一个存储节点; 所述根据存储节点序列的排序遍历存储节点序列中的存储节点,具体包括: 判断向后指针指向的存储节点是否与尾指针指向的存储节点相同,若不同,则在判断出向后指针当如指向的存储节点超时后,将向后指针指向下存储节点;右相冋,则判断尾指针指向的存储节点是否超时。5.如权利要求4所述的方法,其特征在于,所述双链表中还设置有头指针,头指针指向存储节点序列中的首个存储节点; 在判断出存储节点未超时之后、结束遍历之前,所述方法还包括:将头指针指向所述存储节点。6.如权利要求1-5任一项所述的方法,其特征在于,所述方法还包括: 当接收到数据存储请求时,计算数据存储位置,并根据所述数据存储位置存储数据;在所述哈希表中写入所述数据对应的存储节点的关键字与存储位置的对应关系;在所述双链表中存储节点序列的尾部记录所述存储节点的存储位置,并记录所述存储节点的存储时间; 当接收到数据删除请求时,在所述哈希表中删除相应存储节点的关键字与数据存储位置的对应关系,并在所述双链表的存储节点序列中删除相应记录。7.—种数据处理设备,其特征在于,包括:存储模块、遍历模块、判断模块、双链表维护模块和哈希表维护模块; 所述存储模块用于,存储用于记录存储节点的关键字和存储位置的对应关系的哈希表,以及存储双链表,双链表用于记录根据存储时间由先到后进行排序的存储节点序列,存储节点序列中的存储节点为哈希表中的存储节点; 所述遍历模块用于,当预设的维护周期到达时,根据存储节点序列的排序遍历存储节点序列中的存储节点; 所述判断模块用于,在遍历过程中,判断存储节点是否超时,当存储节点超时时,指示所述双链表维护模块在双链表中删除当前的存储节点,并指示所述哈希表维护模块在哈希表中删除所述存储节点的关键字与数据存储位置的对应关系;以及,当存储节点未超时时,结束遍历。8.如权利要求7所述的数据处理设备,其特征在于,所述判断模块具体用于,计算存储节点的存储时间与当前时间之间的时间差,并将所述时间差与预设的阈值相比较,当所述时间差大于所述阈值时,所述存储节点超时;当所述时间差小于或等于所述阈值,所述存储节点未超时。9.如权利要求7所述的数据处理设备,其特征在于,所述遍历模块具体用于,根据存储节点序列的排序,由前至后遍历存储节点序列中的存储节点。10.如权利要求9所述的数据处理设备,其特征在于,所述双链表中设置有向后指针和尾指针,尾指针指向存储节点序列中的最末的存储节点; 所述双链表维护模块具体用于,在双链表中删除当前存储节点,并将向后指针指向存储节点序列中已删除的存储节点的下一个存储节点; 所述遍历模块具体用于,判断向后指针指向的存储节点是否与尾指针指向的存储节点相同,若不同,则在判断出向后指针当前指向的存储节点超时后,将向后指针指向下一个存储节点;若相同,则判断尾指针指向的存储节点是否超时。11.如权利要求10所述的数据处理设备,其特征在于,所述双链表中还设置有头指针,头指针指向存储节点序列中的首个存储节点; 所述遍历模块还用于,在判断出存储节点未超时之后、结束遍历之前,将头指针指向所述存储节点。12.如权利要求7-11任一项所述的数据处理设备,其特征在于,还包括接收模块和数据更新t吴块; 所述接收模块用于,接收数据存储请求和数据删除请求; 所述数据更新模块用于,在所述接收模块接收到数据存储请求时,计算数据存储位置,并根据所述数据存储位置存储数据;指示所述哈希表维护模块在所述哈希表中写入所述数据对应的存储节点的关键字与存储位置的对应关系;指示所述双链表维护模块在所述双链表中存储节点序列的尾部记录所述存储节点,并记录所述存储节点的存储时间;以及,在所述接收模块接收到数据删除请求时,指示所述哈希表维护模块在所述哈希表中删除相应存储节点的关键字与数据存储位置的对应关系,并指示所述双链表维护模块在所述双链表的存储节点序列中删除相应存储节点。
【文档编号】G06F17/30GK106095850SQ201610389037
【公开日】2016年11月9日
【申请日】2016年6月2日 公开号201610389037.7, CN 106095850 A, CN 106095850A, CN 201610389037, CN-A-106095850, CN106095850 A, CN106095850A, CN201610389037, CN201610389037.7
【发明人】李希金, 杨宇, 肖吉, 王志军
【申请人】中国联合网络通信集团有限公司