一种数据处理的方法和装置制造方法及图纸

技术编号:36062307 阅读:18 留言:0更新日期:2022-12-24 10:27
本申请公开了一种数据处理的方法和装置,该方法包括:redis中创建多个IO线程和多个工作线程,通过多个IO线程并行处理多个客户端发送的多个网络数据包;针对每个IO线程,在解析网络数据包得到命令数据后,基于命令数据和数据分片算法,获得多个分片命令数据,每个IO线程将获得的多个分片命令数据发送至多个工作线程;通过多个工作线程并行处理多个分片命令数据。可见,对于大量服务请求并发的场景,利用多个IO线程并行处理大量网络数据包;通过数据分片算法将命令数据分片,利用多个工作线程并行处理大量分片命令数据;减小命令数据的处理时间,提高redis的整体数据处理性能和服务请求的响应效率。求的响应效率。求的响应效率。

【技术实现步骤摘要】
一种数据处理的方法和装置


[0001]本申请涉及计算机
,尤其涉及一种数据处理的方法和装置。

技术介绍

[0002]redis(Remote Dictionary Server)是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、键值对存储数据库,也是远程字典服务。redis天生采用单线程模式,因此,所有数据集中在一个线程处理。
[0003]现阶段,redis虽然升级采用多线程模式;即,采用多个IO线程处理网络数据包,以及采用单个工作线程处理解析网络数据包所得到的命令数据。专利技术人经过研究发现,对于大量服务请求并发的场景,多个IO线程处理大量网络数据包消耗时间少,但单个工作线程处理大量命令数据需要消耗较多时间,导致redis的整体数据处理性能仍然较低,从而导致redis对服务请求的响应效率较低。

技术实现思路

[0004]有鉴于此,本申请实施例提供一种数据处理的方法和装置,对于大量服务请求并发的场景,提高redis的数据处理性能,从而提高redis对服务请求的响应效率。
[0005]第一方面,本申请实施例提供了一种数据处理的方法,应用于键值对存储数据库redis,所述redis中创建多个输入/输出IO线程和多个工作线程,所述方法包括:
[0006]通过多个所述IO线程并行处理多个客户端发送的多个网络数据包;
[0007]针对每个所述IO线程,在解析所述网络数据包得到命令数据后,基于所述命令数据和数据分片算法,获得多个分片命令数据;
>[0008]每个所述IO线程将获得的多个分片命令数据发送至多个所述工作线程;
[0009]通过多个所述工作线程并行处理多个所述分片命令数据。
[0010]可选的,所述方法还包括:
[0011]针对每个所述IO线程,基于所述命令数据和数据分片算法,获得与每个所述分片命令数据对应的工作线程的工作线程标识;
[0012]所述每个所述IO线程将获得的多个分片命令数据发送至多个所述工作线程,包括:
[0013]针对每个所述分片命令数据,与分片命令数据对应的所述IO线程将该分片命令数据发送至所述工作线程标识对应的工作线程。
[0014]可选的,所述分片命令数据携带IO线程标识;
[0015]在所述通过多个所述工作线程并行处理多个所述分片命令数据之后,所述方法还包括:
[0016]针对每个所述分片命令数据,将所述分片命令数据的处理结果发送至所述分片命令数据携带的所述IO线程标识对应的IO线程。
[0017]可选的,所述分片命令数据携带客户端标识;
[0018]在所述将所述分片命令数据的处理结果发送至所述分片命令数据携带的所述IO线程标识对应的IO线程之后,所述方法还包括:
[0019]将每个所述分片命令数据的处理结果发送至所述分片命令数据携带的所述客户端标识对应的客户端。
[0020]可选的,所述数据分片算法是基于所述网络数据包对应的服务请求预先设置的,或,所述数据分片算法是系统预先默认的。
[0021]可选的,所述方法还包括:
[0022]若多个所述工作线程的负载情况不均衡,根据多个所述工作线程的负载情况,调整所述数据分片算法,以均衡多个所述工作线程的负载情况。
[0023]可选的,所述方法还包括:
[0024]若多个所述工作线程的负载情况符合预设负载情况,根据多个所述工作线程的负载情况,调整多个所述工作线程的数量。
[0025]第二方面,本申请实施例提供了一种数据处理的装置,应用于键值对存储数据库redis,所述redis中创建多个输入/输出IO线程和多个工作线程,所述装置包括:
[0026]第一处理单元,用于通过多个所述IO线程并行处理多个客户端发送的多个网络数据包;
[0027]第一获得单元,用于针对每个所述IO线程,在解析所述网络数据包得到命令数据后,基于所述命令数据和数据分片算法,获得多个分片命令数据;
[0028]第一发送单元,用于每个所述IO线程将获得的多个分片命令数据发送至多个所述工作线程;
[0029]第二处理单元,用于通过多个所述工作线程并行处理多个所述分片命令数据。
[0030]可选的,所述装置还包括:
[0031]第二获得单元,用于针对每个所述IO线程,基于所述命令数据和数据分片算法,获得与每个所述分片命令数据对应的工作线程的工作线程标识;
[0032]对应地,第一发送单元,用于:
[0033]针对每个所述分片命令数据,与分片命令数据对应的所述IO线程将该分片命令数据发送至所述工作线程标识对应的工作线程。
[0034]可选的,所述分片命令数据携带IO线程标识;所述装置还包括:
[0035]第二发送单元,用于针对每个所述分片命令数据,将所述分片命令数据的处理结果发送至所述分片命令数据携带的所述IO线程标识对应的IO线程。
[0036]可选的,所述分片命令数据携带客户端标识;所述装置还包括:
[0037]第三发送单元,用于将每个所述分片命令数据的处理结果发送至所述分片命令数据携带的所述客户端标识对应的客户端。
[0038]可选的,所述数据分片算法是基于所述网络数据包对应的服务请求预先设置的,或,所述数据分片算法是系统预先默认的。
[0039]可选的,所述装置还包括:
[0040]第一调整单元,用于若多个所述工作线程的负载情况不均衡,根据多个所述工作线程的负载情况,调整所述数据分片算法,以均衡多个所述工作线程的负载情况。
[0041]可选的,所述方法还包括:
[0042]第二调整单元,用于若多个所述工作线程的负载情况符合预设负载情况,根据多个所述工作线程的负载情况,调整多个所述工作线程的数量。
[0043]第三方面,本申请实施例提供了一种终端设备,所述终端设备包括处理器以及存储器:
[0044]所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;
[0045]所述处理器用于根据所述程序代码中的指令执行上述第一方面任一项所述的数据处理的方法。
[0046]第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质用于存储程序代码,所述程序代码用于执行上述第一方面任一项所述的数据处理的方法。
[0047]与现有技术相比,本申请至少具有以下优点:
[0048]采用本申请实施例的技术方案,redis中创建多个IO线程和多个工作线程,通过多个IO线程并行处理多个客户端发送的多个网络数据包;针对每个IO线程,在解析网络数据包得到命令数据后,基于命令数据和数据分片算法,获得多个分片命令数据,每个IO线程将获得的多个分片命令数据发送至多个工作线程;通过多个工作线程并行处理多个分片命令数据。由此可见,对于大量服务请求并发的场景,不仅利用多个IO线程并行处理大量网络数据包,而且通过数据分片算法将命令数据分片,利用本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种数据处理的方法,其特征在于,应用于键值对存储数据库redis,所述redis中创建多个输入/输出IO线程和多个工作线程,所述方法包括:通过多个所述IO线程并行处理多个客户端发送的多个网络数据包;针对每个所述IO线程,在解析所述网络数据包得到命令数据后,基于所述命令数据和数据分片算法,获得多个分片命令数据;每个所述IO线程将获得的多个分片命令数据发送至多个所述工作线程;通过多个所述工作线程并行处理多个所述分片命令数据。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:针对每个所述IO线程,基于所述命令数据和数据分片算法,获得与每个所述分片命令数据对应的工作线程的工作线程标识;所述每个所述IO线程将获得的多个分片命令数据发送至多个所述工作线程,包括:针对每个所述分片命令数据,与分片命令数据对应的所述IO线程将该分片命令数据发送至所述工作线程标识对应的工作线程。3.根据权利要求1所述的方法,其特征在于,所述分片命令数据携带IO线程标识;在所述通过多个所述工作线程并行处理多个所述分片命令数据之后,所述方法还包括:针对每个所述分片命令数据,将所述分片命令数据的处理结果发送至所述分片命令数据携带的所述IO线程标识对应的IO线程。4.根据权利要求3所述的方法,其特征在于,所述分片命令数据携带客户端标识;在所述将所述分片命令数据的处理结果发送至所述分片命令数据携带的所述IO线程标识对应的IO线程之后,所述方法还包括:将每个所述分片命令数据的处理结果发送至所述分片命令数据携带的所述客户端标识对应的客户端。5.根据权利要求1

4任一项所述的方法,其...

【专利技术属性】
技术研发人员:王贺
申请(专利权)人:北京金山云网络技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1