一种并发访问处理的方法、装置及计算机存储介质与流程

文档序号:15981159发布日期:2018-11-17 00:20阅读:215来源:国知局

本文涉及但不限于信息处理技术,尤指一种并发访问处理的方法、装置及计算机存储介质。

背景技术

在互联网领域,远程字典服务器(redis,是一个开源的使用ansic语言编写、支持网络、可基于内存亦可持久化的日志型、键值(key-value)数据库,并提供多种语言的应用程序编程接口(api))作为一款基于内存的非常高效的非关系型数据库,因其提供高效的数据读写操作,并支持字符串(string)、链表(list)、集合(set)、哈希(hash)等复杂的数据结构在业界得到广泛应用;另外,redis支持集群分布式主从部署及扩展,提供了不同级别的数据持久化方式,使得服务的扩展与集群容灾得到有效保障;与此同时,redis还应用于订阅与发布、消息队列等场景。

在c++实现的包括购物在内的高频访问服务场景,对redis的多线程高并发的数据读写提出了更高的要求。目前,针对高频访问服务,一般进行以下处理:首先构建redis连接池,每次请求到来,线程内从连接池获取连接,进行数据读写;上述高并发访问服务的场景,基于c语言的客户端hiredis(redis数据库的c接口)可能导致服务崩溃,影响并发访问服务的稳定性和质量。



技术实现要素:

以下是对本文详细描述的主题的概述。本概述并非是为了限制权利要求的保护范围。

本发明实施例提供一种并发访问处理的方法、装置及计算机存储介质,能够提升并发访问处理的稳定性和质量。

本发明实施例提供了一种并发访问处理的方法,包括:

为线程池内的每一个线程,分别初始化线程内的远程字典服务器redis连接池;

通过线程池内的线程,进行并发访问的处理;

其中,所述线程池中包含预设数量的线程。

可选的,所述初始化线程内的redis连接池之前,所述方法还包括:

判断出服务启动时,初始化所述线程池。

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

所述线程池内的每一个所述线程,在线程内接收到并发处理的请求时,判断自身线程内的redis连接池是否连接;

判断出自身线程内的redis连接池未连接时,重新初始化自身线程内的redis连接池。

可选的,所述初始化线程内的redis连接池之前,所述方法还包括:

根据接收到的外部指令,确定所述线程池内线程的数量。

另一方面,本发明实施例还提供一种并发访问处理的装置,包括:连接池初始化单元和处理单元;其中,

连接池初始化单元用于:为线程池内的每一个线程,分别初始化线程内的远程字典服务器redis连接池;

处理单元用于:通过线程池内的线程,进行并发访问的处理;

其中,所述线程池中包含预设数量的线程。

可选的,所述装置还包括线程池初始化单元,用于:判断出服务启动时,初始化所述线程池。

可选的,所述装置还包括连接处理单元,用于:

所述线程池内的每一个所述线程,在线程内接收到并发处理的请求时,判断自身线程内的redis连接池是否连接;

判断出自身线程内的redis连接池未连接时,重新初始化自身线程内的redis连接池。

可选的,所述装置还包括确定单元,用于:根据接收到的外部指令,确定所述线程池内线程的数量。

再一方面,本发明实施例还提供一种计算机存储介质,所述计算机存储介质中存储有计算机可执行指令,所述计算机可执行指令用于执行上述并发访问处理的方法。

与相关技术相比,本申请技术方案包括:为线程池内的每一个线程,分别初始化线程内的远程字典服务器(redis)连接池;通过线程池内的线程,进行并发访问的处理;其中,所述线程池中包含预设数量的线程。本发明实施例提升了并发访问处理的稳定性和质量。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。

附图说明

附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。

图1为本发明实施例并发访问处理的方法的流程图;

图2为本发明实施例并发访问处理的装置的结构框图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。

在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

图1为本发明实施例并发访问处理的方法的流程图,如图1所示,包括:

步骤101、为线程池内的每一个线程,分别初始化线程内的远程字典服务器(redis)连接池;其中,所述线程池中包含预设数量的线程。

可选的,初始化线程内的redis连接池之前,本发明实施例方法还包括:

判断出服务启动时,初始化所述线程池。

需要说明的是,初始化线程池和连接池的方法可以包括相关技术中本领域技术人员惯用的处理方法。

步骤102、通过线程池内的线程,进行并发访问的处理;

可选的,本发明实施例方法还包括:

所述线程池内的每一个所述线程,在线程内接收到并发处理的请求时,判断自身线程内的redis连接池是否连接;

判断出自身线程内的redis连接池未连接时,重新初始化自身线程内的redis连接池。

可选的,初始化线程内的redis连接池之前,本发明实施例方法还包括:

根据接收到的外部指令,确定所述线程池内线程的数量。

与相关技术相比,本申请技术方案包括:为线程池内的每一个线程,分别初始化线程内的远程字典服务器(redis)连接池;通过线程池内的线程,进行并发访问的处理;其中,所述线程池中包含预设数量的线程。本发明实施例提升了并发访问处理的稳定性和质量。

图2为本发明实施例并发访问处理的装置的结构框图,如图2所示,包括:连接池初始化单元和处理单元;其中,

连接池初始化单元用于:为线程池内的每一个线程,分别初始化线程内的远程字典服务器(redis)连接池;

处理单元用于:通过线程池内的线程,进行并发访问的处理;

其中,所述线程池中包含预设数量的线程。

可选的,本发明实施例装置还包括线程池初始化单元,用于:判断出服务启动时,初始化所述线程池。

可选的,本发明实施例装置还包括连接处理单元,用于:

所述线程池内的每一个所述线程,在线程内接收到并发处理的请求时,判断自身线程内的redis连接池是否连接;

判断出自身线程内的redis连接池未连接时,重新初始化自身线程内的redis连接池。

可选的,本发明实施例装置还包括确定单元,用于:根据接收到的外部指令,确定所述线程池内线程的数量。

本发明实施例还提供一种计算机存储介质,所述计算机存储介质中存储有计算机可执行指令,计算机可执行指令用于执行上述并发访问处理的方法。

以下通过应用示例对本发明实施例方法进行清楚详细的说明,应用示例仅用于陈述本发明,并不用于限定本发明的保护范围。

应用示例

本发明应用示例通过在线程池初始化时,同时初始化本线程内客户端对redis服务的连接,隔离不同线程对redis连接池的访问。正常服务时,每次并发处理请求到达时,首先检查redis连接是否可用,对于不可用连接需要重新初始化redis连接池。本发明应用示例方法可以隔离不同线程访问对于redis连接池的影响,提高整体服务的健壮性及稳定性。

本发明应用示例处理过程包括:

服务启动时,初始化指定数量线程的线程池;

每一个线程初始化时,同时初始化线程内redis连接池;

线程内,每一次并发访问请求的处理时,首先检查获取到线程的连接的有效性,如果连接断开,需要重新初始化线程内的redis连接池。

本发明应用示例,可以隔离不同线程访问对于redis连接池的影响,提高整体服务的健壮性及稳定性。本发明应用示例:首先在服务启动时初始化指定线程数量的线程池;然后在线程初始化时初始化线程内redis连接池,作为线程私有数据保存;最后线程正常服务时,每次接收到请求时,首先检查获取redis连接是否有效,如果连接失效,需要重新初始化。本发明应用示例线程初始化时同时初始化线程内redis连接池,而不是所有线程共享一个redis连接池;请求处理时,首先检查获取redis连接是否有效,如果无效,则重新连接,而不是每次重新建立redis连接。本发明应用示例,服务启动时初始化指定线程数量的线程池。

本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件(例如处理器)完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的每个模块/单元可以采用硬件的形式实现,例如通过集成电路来实现其相应功能,也可以采用软件功能模块的形式实现,例如通过处理器执行存储于存储器中的程序/指令来实现其相应功能。本发明不限制于任何特定形式的硬件和软件的结合。

虽然本发明所揭露的实施方式如上,但所述的内容仅为便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式及细节上进行任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。

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