内存数据的数据操作方法、装置及电子设备与流程

文档序号:16133648发布日期:2018-12-01 00:38阅读:170来源:国知局

本发明涉及计算机应用技术领域,特别是涉及内存数据的数据操作方法、装置及电子设备。

背景技术

属于内存数据缓存表的哈希表是内存数据的一种表现形式。哈希表是根据关键码值(keyvalue)而直接进行访问的数据结构,具体而言,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。

针对内存数据的数据操作包括内存数据的写入和查询。在多核/多线程的系统环境下,因多核/多线程在使用哈希表的过程中需要考虑同步和竞争的关系,因此,通常采用对哈希表添加读写锁或自旋锁的方式实现读写同步。添加读写锁或自旋锁的哈希表,在数据写入时,处于锁定状态不能够进行查询;在数据查询时,同样处于锁定状态不能够进行数据的写入。

实际应用中,在网络需要高性能高并发处理能力的时候,加锁的哈希表常常会成为性能的瓶颈。为了网络能够有高性能的处理能力,现有的处理方法是,借助无锁化手段来实现哈希表数据的同步,使得哈希表中数据的读写更为高效。以哈希表中存储地址解析协议(addressresolutionprotocol,简称arp)相关信息为例,为了网络能够有高性能的处理能力,在多核/多线程的系统环境下,将存储arp相关信息的表设计成每个核/每个线程维护一个哈希表,当一个核/线程的哈希表更新后则需要将更新的数据内容同步(写入)到其他核/线程的哈希表中,以使其他核/线程对哈希表的查询更高效,其中,具体数据同步的方法可以利用无锁化环形队列来实现。

然而,发明人在实现本发明的过程中发现,现有技术至少存在如下问题:

为了网络能够有高性能的处理能力,在多核/多线程的系统环境下,每个核/线程维护一个哈希表,需要维护的哈希表数量多,占用的内存较大。



技术实现要素:

本发明实施例的目的在于提供了内存数据的数据操作方法、装置及电子设备,以在保证网络具有高性能高并发处理能力的前提下,降低内存占用率。具体技术方案如下:

第一方面,本发明实施例提供了一种内存数据的数据操作方法,所述方法包括:

当接收到写操作指令时,对预设的内存数据缓存表组中的主缓存表,执行所述写操作指令所指示的数据写入操作;其中,所述内存数据缓存表组中包括一个主缓存表和两个从缓存表,所述两个从缓存表中一个表的标识为写标识,另一个表的标识为读标识;

在对所述主缓存表执行完数据写入操作后,将所述主缓存表中的数据内容全量同步至具有写标识的从缓存表中;

在同步完成后,将所述两个从缓存表的标识进行互换;

当接收到读操作指令时,对具有读标识的从缓存表执行所述读操作指令所指示的数据查询操作。

可选的,所述内存数据缓存表组中的各个表的确定方式,包括:

将初始化过程中所生成的内存数据缓存表,确定为主缓存表;

将所述主缓存表进行两次拷贝,得到两个从缓存表,并将两个从缓存表中的一个表的标识设置为读标识,另一个表的标识设置为写标识。

可选的,所述将所述主缓存表进行两次拷贝,得到两个从缓存表,并将两个从缓存表中的一个表的标识设置为读标识,另一个表的标识设置为写标识的步骤,包括:

将所述主缓存表进行两次拷贝,得到两个从缓存表,初始化两个从缓存表的引用计数为0;

将两个从缓存表中的一个表的标识设置为读标识,另一个表的标识设置为写标识;

所述将所述两个从缓存表的标识进行互换的步骤,包括:

将所述两个从缓存表的标识和引用计数进行互换;

所述方法还包括:

在对具有读标识的从缓存表执行所述读操作指令所指示的数据查询操作的过程中,将具有读标识的从缓存表的引用计数加1,并在结束查询时,将该引用计数加1的从缓存表的引用计数恢复为0。

可选的,所述在对所述主缓存表执行完数据写入操作后,将所述主缓存表中的数据内容全量同步至具有写标识的从缓存表中的步骤,包括:

在对所述主缓存表执行完数据写入操作后,判断具有写标识的从缓存表的引用计数是否为0;

若具有写标识的从缓存表的引用计数为0,则将所述主缓存表中的数据内容全量同步至具有写标识的从缓存表中;

若具有写标识的从缓存表的引用计数不为0,则在具有写标识的从缓存表的引用计数为0后,将所述主缓存表中的数据内容全量同步至具有写标识的从缓存表中。

可选的,所述对预设的内存数据缓存表组中的主缓存表,执行所述写操作指令所指示的数据写入操作的步骤,包括:

检测所述主缓存表是否处于写入或查询状态,当所述主缓存表不处于写入或查询状态时,执行所述写操作指令所指示的数据写入操作。

可选的,所述方法还包括:

若在具有读标识的从缓存表中没有查询到所需查找的数据时,则对所述主缓存表执行所述读操作指令所指示的数据查询操作。

可选的,所述对所述主缓存表执行所述读操作指令所指示的数据查询操作的步骤,包括:

检测所述主缓存表是否处于写入状态,当所述主缓存表不处于写入状态时,对所述主缓存表执行所述读操作指令所指示的数据查询操作。

第二方面,本发明实施例还提供了一种内存数据的数据操作装置,所述装置包括:

数据写入模块,用于当接收到写操作指令时,对预设的内存数据缓存表组中的主缓存表,执行所述写操作指令所指示的数据写入操作;其中,所述内存数据缓存表组中包括一个主缓存表和两个从缓存表,所述两个从缓存表中一个表的标识为写标识,另一个表的标识为读标识;

数据同步模块,用于在对所述主缓存表执行完数据写入操作后,将所述主缓存表中的数据内容全量同步至具有写标识的从缓存表中;

标识互换模块,用于在同步完成后,将所述两个从缓存表的标识进行互换;

第一查询模块,用于当接收到读操作指令时,对具有读标识的从缓存表执行所述读操作指令所指示的数据查询操作。

可选的,所述装置还包括:确定模块;

所述确定模块,具体用于:

将初始化过程中所生成的内存数据缓存表,确定为主缓存表;

将所述主缓存表进行两次拷贝,得到两个从缓存表,并将两个从缓存表中的一个表的标识设置为读标识,另一个表的标识设置为写标识。

可选的,所述装置还包括:初始化模块;

所述初始化模块,具体用于:

将所述主缓存表进行两次拷贝,得到两个从缓存表,初始化两个从缓存表的引用计数为0;

将两个从缓存表中的一个表的标识设置为读标识,另一个表的标识设置为写标识;

所述标识互换模块,具体用于:将所述两个从缓存表的标识和引用计数进行互换;

所述装置还包括:计数模块;

所述计数模块,具体用于:在对具有读标识的从缓存表执行所述读操作指令所指示的数据查询操作的过程中,将具有读标识的从缓存表的引用计数加1,并在结束查询时,将该引用计数加1的从缓存表的引用计数恢复为0。

可选的,所述数据同步模块,具体用于:

在对所述主缓存表执行完数据写入操作后,判断具有写标识的从缓存表的引用计数是否为0;

若具有写标识的从缓存表的引用计数为0,则将所述主缓存表中的数据内容全量同步至具有写标识的从缓存表中;

若具有写标识的从缓存表的引用计数不为0,则在具有写标识的从缓存表的引用计数为0后,将所述主缓存表中的数据内容全量同步至具有写标识的从缓存表中。

可选的,所述数据写入模块,具体用于:

检测所述主缓存表是否处于写入或查询状态,当所述主缓存表不处于写入或查询状态时,执行所述写操作指令所指示的数据写入操作。

可选的,所述装置还包括:第二查询模块;

所述第二查询模块,用于若在具有读标识的从缓存表中没有查询到所需查找的数据时,则对所述主缓存表执行所述读操作指令所指示的数据查询操作。

可选的,所述第二查询模块,具体用于:

检测所述主缓存表是否处于写入状态,当所述主缓存表不处于写入状态时,对所述主缓存表执行所述读操作指令所指示的数据查询操作。

第三方面,本发明实施例还提供了一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;

存储器,用于存放计算机程序;

处理器,用于执行存储器上所存放的程序时,实现上述第一方面所述的一种内存数据的数据操作方法。

第四方面,本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面所述的一种内存数据的数据操作方法。

第五方面,本发明实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面所述的一种内存数据的数据操作方法。

本发明实施例提供的方案中,在网络需要高性能高并发处理能力时,只需要维护三个内存数据缓存表,在主缓存表中执行数据写入操作,在具有读标识的从缓存表中执行数据查询操作,当主缓存表执行完数据写入操作后,将主缓存表中的数据内容全量同步至具有写标识的从缓存表中,同步完成后将两个从缓存表的标识进行互换。相对于现有技术,本方案在多核/多线程的系统环境下,不需要每个核/线程维护自己的内存数据缓存表,内存数据缓存表的数量与核/线程的数量无关,节省了内存空间,因此,可以在保证网络具有高性能高并发处理能力的前提下,降低内存占用率。并且,简化了内存数据缓存表中数据内容同步的过程,降低了同步难度,使得数据查询操作无锁化,提高网络高性能高并发处理能力。

当然,实施本发明的任一产品或方法必不一定需要同时达到以上所述的所有优点。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。

图1为本发明实施例提供的一种内存数据的数据操作方法的流程图;

图2为本发明实施例提供的一种缓存表组之间的逻辑示意图;

图3为本发明实施例提供的另一种内存数据的数据操作方法的流程图;

图4为本发明实施例提供的一种内存数据的数据操作装置的结构示意图;

图5为本发明实施例提供的一种电子设备结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。

为了在保证网络具有高性能高并发处理能力的前提下,降低内存占用率,本发明实施例提供了内存数据的数据操作方法、装置及电子设备。

下面首先对本发明实施例所提供的一种内存数据的数据操作方法进行介绍。

需要说明的是,本发明实施例所提供的一种内存数据的数据操作方法可以应用于电子设备中,并且,该电子设备的系统环境可以为多核/多线程的环境,当然并不局限于此。

另外,本发明实施例所提供的一种内存数据的数据操作方法所针对的内存数据,可以是存储于计算机中任一种内存数据,本发明实施例可针对的内存数据的类型在此不作限制,举例而言:内存数据可以为arp相关信息,当然并不局限于此。并且,本发明实施例所涉及的内存数据缓存表可以为哈希表或是arp表,当然并不局限于此。

并且,为了解决现有技术问题,本发明实施例中,可以预先设置一个内存数据缓存表组,所述内存数据缓存表组中包括一个主缓存表和两个从缓存表,所述两个从缓存表中一个表的标识为写标识,另一个表的标识为读标识。具体的,所述内存数据缓存表组中的各个表的确定方式,可以包括:

将初始化过程中所生成的内存数据缓存表,确定为主缓存表;

将所述主缓存表进行两次拷贝,得到两个从缓存表,并将两个从缓存表中的一个表的标识设置为读标识,另一个表的标识设置为写标识。

可选地,在一种具体实现方式中,将初始化过程中所生成的内存数据缓存表,确定为主缓存表可以包括:

当检测到网络初始化完成时,可以将初始化过程中生成的内存数据缓存表直接确定为主缓存表。

可选地,在另一种具体实现方式中,将初始化过程中所生成的内存数据缓存表,确定为主缓存表可以包括:

在数据处理过程中,将网络初始化过程中所生成的内存数据缓存表,确定为主缓存表。该内存数据缓存表可以是,在网络初始化过程中所生成的内存数据缓存表,但其所存储的数据相关内容已经更新,是更新之后的内存数据缓存表。

相应的,将主缓存表进行两次拷贝,得到两个从缓存表的过程可以为:当检测到网络初始化完成时,将初始化过程中生成的内存数据缓存表确定为主缓存表,然后将确定的主缓存表进行两次拷贝,得到两个从缓存表。或是在数据处理过程中,将初始化过程中所生成的内存数据缓存表确定为主缓存表,然后判断是否在主缓存表中执行数据写入操作,如果是,则在主缓存表中完成该数据写入操作后,将主缓存表进行两次拷贝,得到两个从缓存表;如果否,则将主缓存表直接进行两次拷贝,得到两个从缓存表。在得到两个从缓存表之后,将两个从缓存表分别进行标识,其中一个从缓存表具有写标识,另一个从缓存表具体读标识。

需要说明的是,上述的缓存表组中各个表的具体确定方式仅仅作为示例,并不应该构成对本发明实施例的限定。

如图1所示,图1为本发明实施例提供的一种内存数据的数据操作方法的流程图,该方法可以包括如下步骤:

s101,当接收到写操作指令时,对预设的内存数据缓存表组中的主缓存表,执行所述写操作指令所指示的数据写入操作;

其中,所述内存数据缓存表组中包括一个主缓存表和两个从缓存表,所述两个从缓存表中一个表的标识为写标识,另一个表的标识为读标识。关于预设的内存数据缓存表组中各个表的确定方式可参见上文描述。

具体的,当接收到写操作指令时,对预设的内存数据缓存表组中的主缓存表,执行写操作指令所指示的数据写入操作的一种可选的实现方式为:

检测所述主缓存表是否处于写入或查询状态,当所述主缓存表不处于写入或查询状态时,执行所述写操作指令所指示的数据写入操作。

可以理解的是,当接收到写操作指令时,可以先检测主缓存表是否处于数据写入或查询状态。当检测到主缓存表处于数据写入或查询状态时,该主缓存表处于锁定状态不能再对其进行数据的写入,只有在主缓存表的数据完成写入或查询时,其锁定状态解除,可以对该主缓存表进行数据的写入。当检测到主缓存表不处于数据写入或查询状态时,可以对该主缓存表进行数据的写入。

并且,写操作指令的具体类型与具体应用场景相匹配。以存储地址解析协议相关内容的arp表为例,写操作指令可以是:接收到arp响应、arp请求超时或手动修改的指令等。当然,本发明只是以上述写操作指令的形式为例进行说明,实际应用中写操作指令并不仅限于此。

s102,在对所述主缓存表执行完数据写入操作后,将所述主缓存表中的数据内容全量同步至具有写标识的从缓存表中。

在主缓存表执行完数据写入操作之后,可以将主缓存表中的数据内容全量同步至具有写标识的从缓存表中。需要强调的是,数据写入操作可以是新写入部分数据内容,或修改部分数据内容。在主缓存表中有数据内容发生变化都属于本发明实施例的保护范围之内,具体的数据写入操作方式本发明实施例在此不作限制。

s103,在同步完成后,将所述两个从缓存表的标识进行互换。

在完成将主缓存表中的数据内容全量同步至具有写标识的从缓存表中之后,可以将两个从缓存表的标识进行互换,即将原来具有写标识的从缓存表的标识修改为具有读标识,将原来具有读标识的从缓存表的标识修改为具有写标识。

需要说明的是,将主缓存表中的数据内容全量同步至具有写标识的从缓存表中,同步之后的具有写标识的从缓存表中所包含的数据内容,与主缓存表中所包含的数据内容完全一致。当两个从缓存表的标识进行互换之后,具有读标识的从缓存表中所包含的数据内容,与主缓存表中所包含的数据内容完全一致,使得具有读标识的从缓存表的数据内容与主缓存表的数据内容一致,实现用户数据查询的同步。

s104,当接收到读操作指令时,对具有读标识的从缓存表执行所述读操作指令所指示的数据查询操作。

当接收到读操作指令时,对具有读标识的从缓存表执行读操作指令所指示的数据查询操作,如果在具有读标识的从缓存表中查询到所需查找的数据时,该查询操作结束。

可选地,本发明实施例所提供的方法,还可以包括:

若在具有读标识的从缓存表中没有查询到所需查找的数据时,则对所述主缓存表执行所述读操作指令所指示的数据查询操作。

其中,当接收到读操作指令时,对具有读标识的从缓存表执行读操作指令所指示的数据查询操作,如果在具有读标识的从缓存表中没有查询到所需查找的数据时,则对主缓存表执行读操作指令所指示的数据查询操作。另外,一种可选的实现方式还可以为,当在主缓存表中也没有查询到所需查找的数据时,可以响应未查询到数据,或是向服务器发送查询请求。当然,本发明只是以上述实现方法为例进行说明,实际应用中执行数据查询的方法并不仅限于此。

具体的,本发明实施例中,对所述主缓存表执行所述读操作指令所指示的数据查询操作的一种可选的实现方式为:

检测所述主缓存表是否处于写入状态,当所述主缓存表不处于写入状态时,对所述主缓存表执行所述读操作指令所指示的数据查询操作。

当对主缓存表执行读操作指令所指示的数据查询操作时,可以先检测主缓存表是否处于数据写入状态。当检测到主缓存表处于数据写入状态时,该主缓存表处于锁定状态不能再对其进行数据的查询,在主缓存表的数据完成写入时,其锁定状态解除,可以对该主缓存表进行数据的查询。当检测到主缓存表不处于数据写入状态时,可以对该主缓存表进行数据的查询。

为了便于理解方案,内存数据缓存表组中的主缓存表、具有写标识的从缓存表和具有读标识的从缓存表之间的逻辑示意图,可参见图2。其中,在主缓存表中执行数据写入操作,在具有读标识的从缓存表中执行数据查询操作。当主缓存表执行完数据写入操作后,将主缓存表中的数据内容全量同步至具有写标识的从缓存表中,同步完成将两个从缓存表的标识进行互换,以实现数据查询操作无锁化。

本发明实施例提供的一种内存数据的数据操作方法,在网络需要高性能高并发处理能力时,只需要维护三个内存数据缓存表,在主缓存表中执行数据写入操作,在具有读标识的从缓存表中执行数据查询操作,当主缓存表执行完数据写入操作后,将主缓存表中的数据内容全量同步至具有写标识的从缓存表中,同步完成后将两个从缓存表的标识进行互换。相对于现有技术,本方案在多核/多线程的系统环境下,不需要每个核/线程维护自己的内存数据缓存表,内存数据缓存表的数量与核/线程的数量无关,节省了内存空间,因此,可以在保证网络具有高性能高并发处理能力的前提下,降低内存占用率。并且,简化了内存数据缓存表中数据内容同步的过程,降低了同步难度,使得数据查询操作无锁化,提高网络高性能高并发处理能力。

下面对本发明实施例所提供的另一种内存数据的数据操作方法进行介绍。

需要说明的是,本发明实施例所提供的另一种内存数据的数据操作方法可以应用于电子设备中,并且,该电子设备的系统环境可以为多核/多线程的环境,当然并不局限于此。

本发明实施例中,可以预先设置一个内存数据缓存表组,所述内存数据缓存表组中包括一个主缓存表和两个从缓存表,所述两个从缓存表中一个表的标识为写标识,另一个表的标识为读标识。具体的,所述内存数据缓存表组中的各个表的确定方式可参见上文描述,此处不再赘述。

具体的,当确定主缓存表之后,将所述主缓存表进行两次拷贝,得到两个从缓存表,并将两个从缓存表中的一个表的标识设置为读标识,另一个表的标识设置为写标识的步骤,可以包括:

将所述主缓存表进行两次拷贝,得到两个从缓存表,初始化两个从缓存表的引用计数为0;

将两个从缓存表中的一个表的标识设置为读标识,另一个表的标识设置为写标识。

在对从缓存表进行引用计数的标识之后,当主缓存表执行完数据写入操作,将主缓存表中的数据内容全量同步至具有写标识的从缓存表中,并在同步完成后将两个从缓存表的标识和引用计数进行互换。可以防止互换后,在具有写标识的从缓存表中原来的数据查询操作未完成的情况下,再次将主缓存表中的数据内容全量同步至具有写标识的从缓存表中,影响未完成的数据查询操作,具体内容将在下文详细介绍。

如图3所示,图3为本发明实施例提供的另一种内存数据的数据操作方法的流程图,该方法可以包括如下步骤:

s301,当接收到写操作指令时,对预设的内存数据缓存表组中的主缓存表,执行所述写操作指令所指示的数据写入操作。

其中,所述对预设的内存数据缓存表组中的主缓存表,执行所述写操作指令所指示的数据写入操作的步骤,包括:

检测所述主缓存表是否处于写入或查询状态,当所述主缓存表不处于写入或查询状态时,执行所述写操作指令所指示的数据写入操作。

本发明实施例中,步骤s301和图1所示方法中的s101可以相同,本发明在此不作赘述。

s302,在对所述主缓存表执行完数据写入操作后,将所述主缓存表中的数据内容全量同步至具有写标识的从缓存表中。

可以理解的是,数据写入操作可以是新写入部分数据内容,或修改部分数据内容。在主缓存表中有数据内容发生变化都属于本发明实施例的保护范围之内,具体的数据写入操作方式本发明实施例在此不作限制。

本发明实施例中一种可选的实现方式为,在对所述主缓存表执行完数据写入操作后,将所述主缓存表中的数据内容全量同步至具有写标识的从缓存表中的步骤,可以包括:

在对所述主缓存表执行完数据写入操作后,判断具有写标识的从缓存表的引用计数是否为0;

若具有写标识的从缓存表的引用计数为0,则将所述主缓存表中的数据内容全量同步至具有写标识的从缓存表中;

若具有写标识的从缓存表的引用计数不为0,则在具有写标识的从缓存表的引用计数为0后,将所述主缓存表中的数据内容全量同步至具有写标识的从缓存表中。

可以理解的是,在内存数据缓存表组中的各个表刚确定完成,且第一次对主缓存表执行完数据写入操作时,此时具有写标识的从缓存表的引用计数还是初始值0。但是,在内存数据缓存表组中的各个表确定完成,且并非第一次对主缓存表执行完数据写入操作时,因在主缓存表执行完数据写入操作后,会将主缓存表中的数据内容全量同步至具有写标识的从缓存表中,同步完成将两个从缓存表的标识进行互换,引用计数也进行互换,此时具有写标识的从缓存表的引用计数可以为0,也可以不为0。具体的,将两个从缓存表的标识和引用计数进行互换将在下文进行详细介绍。

进一步地,当并非第一次对主缓存表执行数据写入操作时,需要在主缓存表执行完数据写入操作之后,判断具有写标识的从缓存表的引用计数是否为0,当具有写标识的从缓存表的引用计数为0时,将主缓存表中的数据内容全量同步至具有写标识的从缓存表中;当具有写标识的从缓存表的引用计数不为0时,在具有写标识的从缓存表的引用计数为0后,将主缓存表中的数据内容全量同步至具有写标识的从缓存表中。

可以理解的是,如果判断出具有写标识的从缓存表的引用计数为0,则说明该具有写标识的从缓存表不处于数据查询或写入的任何一种状态,因此,可以将主缓存表中的数据内容全量同步至具有写标识的从缓存表中。

而如果判断出具有写标识的从缓存表的引用计数不为0,则说明该具有写标识的从缓存表为,正在数据查询的具有读标识的从缓存表切换标识之后的从缓存表,该具有写标识的从缓存表在处于数据查询状态。则等待正在数据查询的具有写标识的从缓存表中数据查询结束,其引用计数为0之后,将主缓存表中的数据内容全量同步至具有写标识的从缓存表中。

s303,在同步完成后,将所述两个从缓存表的标识和引用计数进行互换。

在完成将主缓存表中的数据内容全量同步至具有写标识的从缓存表中之后,可以将两个从缓存表的标识进行互换,并且将两个从缓存表的引用计数进行互换。即将原来具有写标识的从缓存表的标识修改为具有读标识,原来具有写标识的从缓存表的引用计数修改为原来具有读标识的从缓存表的引用计数;将原来具有读标识的从缓存表的标识修改为具有写标识,原来具有读标识的从缓存表的引用计数修改为原来具有写标识的从缓存表的引用计数。

可以理解的是,将主缓存表中的数据内容全量同步至具有写标识的从缓存表中,同步之后的具有写标识的从缓存表中所包含的数据内容,与主缓存表中所包含的数据内容完全一致。当两个从缓存表的标识进行互换之后,具有读标识的从缓存表中所包含的数据内容,与主缓存表中所包含的数据内容完全一致,使得具有读标识的从缓存表的数据内容与主缓存表的数据内容一致,实现用户数据查询的同步。

s304,当接收到读操作指令时,对具有读标识的从缓存表执行所述读操作指令所指示的数据查询操作。

可选地,本发明实施例在对具有读标识的从缓存表执行所述读操作指令所指示的数据查询操作之后,所述方法还可以包括:

若在具有读标识的从缓存表中没有查询到所需查找的数据时,则对所述主缓存表执行所述读操作指令所指示的数据查询操作。

其中,所述对所述主缓存表执行所述读操作指令所指示的数据查询操作的步骤,可以包括:

检测所述主缓存表是否处于写入状态,当所述主缓存表不处于写入状态时,对所述主缓存表执行所述读操作指令所指示的数据查询操作。

本发明实施例中,步骤s304和图1所示方法中的s104可以相同,本发明在此不作赘述。

s305,在对具有读标识的从缓存表执行所述读操作指令所指示的数据查询操作的过程中,将具有读标识的从缓存表的引用计数加1,并在结束查询时,将该引用计数加1的从缓存表的引用计数恢复为0。

在得到两个从缓存表之后,可以将两个从缓存表的引用计数都初始化为0,并保存从缓存表的引用计数,分别对两个从缓存表进行标识。然后,在对具有读标识的从缓存表执行读操作指令所指示的数据查询操作的过程中,将具有读标识的从缓存表的引用计数加1,并且在结束数据查询时,将该引用计数加1的从缓存表的引用计数恢复为0,此处引用计数加1的从缓存表可以是具有读标识的从缓存表,也可以是具有写标识的从缓存表。

本发明实施例提供的另一种内存数据的数据操作方法,在网络需要高性能高并发处理能力时,只需要维护三个内存数据缓存表,在主缓存表中执行数据写入操作,在具有读标识的从缓存表中执行数据查询操作,当主缓存表执行完数据写入操作后,将主缓存表中的数据内容全量同步至具有写标识的从缓存表中,同步完成后将两个从缓存表的标识进行互换。相对于现有技术,本方案在多核/多线程的系统环境下,不需要每个核/线程维护自己的内存数据缓存表,内存数据缓存表的数量与核/线程的数量无关,节省了内存空间,因此,可以在保证网络具有高性能高并发处理能力的前提下,降低内存占用率。并且,简化了内存数据缓存表中数据内容同步的过程,降低了同步难度,使得数据查询操作无锁化,提高网络高性能高并发处理能力。

相应于上述的内存数据的数据操作方法,本发明实施例提供了一种内存数据的数据操作装置,如图4所示,该装置可以包括:

数据写入模块401,用于当接收到写操作指令时,对预设的内存数据缓存表组中的主缓存表,执行所述写操作指令所指示的数据写入操作;其中,所述内存数据缓存表组中包括一个主缓存表和两个从缓存表,所述两个从缓存表中一个表的标识为写标识,另一个表的标识为读标识;

数据同步模块402,用于在对所述主缓存表执行完数据写入操作后,将所述主缓存表中的数据内容全量同步至具有写标识的从缓存表中;

标识互换模块403,用于在同步完成后,将所述两个从缓存表的标识进行互换;

第一查询模块404,用于当接收到读操作指令时,对具有读标识的从缓存表执行所述读操作指令所指示的数据查询操作。

本发明实施例提供的一种内存数据的数据操作装置,在网络需要高性能高并发处理能力时,只需要维护三个内存数据缓存表,在主缓存表中执行数据写入操作,在具有读标识的从缓存表中执行数据查询操作,当主缓存表执行完数据写入操作后,将主缓存表中的数据内容全量同步至具有写标识的从缓存表中,同步完成后将两个从缓存表的标识进行互换。本发明实施例提供的一种内存数据的数据操作装置,在多核/多线程的系统环境下,不需要每个核/线程维护自己的内存数据缓存表,内存数据缓存表的数量与核/线程的数量无关,节省了内存空间,因此,可以在保证网络具有高性能高并发处理能力的前提下,降低内存占用率。并且,简化了内存数据缓存表中数据内容同步的过程,降低了同步难度,使得数据查询操作无锁化,提高网络高性能高并发处理能力。

需要说明的是,本发明实施例的装置是与图1所示的内存数据的数据操作方法对应的装置,图1所示的内存数据的数据操作方法的所有实施例均适用于该装置,且均能达到相同或相似的有益效果。

可选地,上述内存数据的数据操作装置,还可以包括:确定模块;

所述确定模块,具体用于:

将初始化过程中所生成的内存数据缓存表,确定为主缓存表;

将所述主缓存表进行两次拷贝,得到两个从缓存表,并将两个从缓存表中的一个表的标识设置为读标识,另一个表的标识设置为写标识。

可选地,上述内存数据的数据操作装置,还可以包括:初始化模块;

所述初始化模块,具体用于:

将所述主缓存表进行两次拷贝,得到两个从缓存表,初始化两个从缓存表的引用计数为0;

将两个从缓存表中的一个表的标识设置为读标识,另一个表的标识设置为写标识;

所述标识互换模块,具体用于将所述两个从缓存表的标识和引用计数进行互换;

所述装置还包括:计数模块;

所述计数模块,具体用于:在对具有读标识的从缓存表执行所述读操作指令所指示的数据查询操作的过程中,将具有读标识的从缓存表的引用计数加1,并在结束查询时,将该引用计数加1的从缓存表的引用计数恢复为0。

可选地,所述数据同步模块,具体用于:

在对所述主缓存表执行完数据写入操作后,判断具有写标识的从缓存表的引用计数是否为0;

若具有写标识的从缓存表的引用计数为0,则将所述主缓存表中的数据内容全量同步至具有写标识的从缓存表中;

若具有写标识的从缓存表的引用计数不为0,则在具有写标识的从缓存表的引用计数为0后,将所述主缓存表中的数据内容全量同步至具有写标识的从缓存表中。

可选地,所述数据写入模块,具体用于:

检测所述主缓存表是否处于写入或查询状态,当所述主缓存表不处于写入或查询状态时,执行所述写操作指令所指示的数据写入操作。

可选地,上述内存数据的数据操作装置,还可以包括:第二查询模块;

所述第二查询模块,用于若在具有读标识的从缓存表中没有查询到所需查找的数据时,则对所述主缓存表执行所述读操作指令所指示的数据查询操作。

可选地,所述第二查询模块,具体用于:

检测所述主缓存表是否处于写入状态,当所述主缓存表不处于写入状态时,对所述主缓存表执行所述读操作指令所指示的数据查询操作。

本发明实施例还提供了一种电子设备,如图5所示,包括处理器501、通信接口502、存储器503和通信总线504,其中,处理器501,通信接口502,存储器503通过通信总线504完成相互间的通信,

存储器503,用于存放计算机程序;

处理器501,用于执行存储器503上所存放的程序时,实现本发明实施例所提供的方法。

本发明实施例提供的一种电子设备,在网络需要高性能高并发处理能力时,只需要维护三个内存数据缓存表,在主缓存表中执行数据写入操作,在具有读标识的从缓存表中执行数据查询操作,当主缓存表执行完数据写入操作后,将主缓存表中的数据内容全量同步至具有写标识的从缓存表中,同步完成后将两个从缓存表的标识进行互换。相对于现有技术,本发明实施例提供的一种电子设备,在多核/多线程的系统环境下,不需要每个核/线程维护自己的内存数据缓存表,内存数据缓存表的数量与核/线程的数量无关,节省了内存空间,因此,可以在保证网络具有高性能高并发处理能力的前提下,降低内存占用率。并且,简化了内存数据缓存表中数据内容同步的过程,降低了同步难度,使得数据查询操作无锁化,提高网络高性能高并发处理能力。

上述电子设备提到的通信总线可以是外设部件互连标准(peripheralcomponentinterconnect,简称pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,简称eisa)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

通信接口用于上述电子设备与其他设备之间的通信。

存储器可以包括随机存取存储器(randomaccessmemory,简称ram),也可以包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。

上述的处理器可以是通用处理器,包括中央处理器(centralprocessingunit,简称cpu)、网络处理器(networkprocessor,简称np)等;还可以是数字信号处理器(digitalsignalprocessing,简称dsp)、专用集成电路(applicationspecificintegratedcircuit,简称asic)、现场可编程门阵列(field-programmablegatearray,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的内存数据的数据操作方法,以获取相同的技术效果。

在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的内存数据的数据操作方法,以获取相同的技术效果。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solidstatedisk(ssd))等。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1