请求处理方法、数据获取方法、装置及电子设备与流程
未命名
10-18
阅读:191
评论:0
1.本公开涉及计算机领域和金融科技领域,具体地涉及一种请求处理方法、数据获取方法、装置、设备、介质和程序产品。
背景技术:
2.redis是一个key-value数据结构的内存存储系统,用作数据库、缓存和消息代理。它支持支持字符串、哈希表、列表、集合、有序集合、位图等数据类型。redis内置赋值、lua脚本、lru收回、事务以及不同级别磁盘持久化功能,同时通过redis sentinel提供高可用,通过redis cluster提供自动分区。
3.但是,当redis处理的请求过大时,性能会明显下降;同时由于redis是单线程的,当处理的请求较大时容易存在阻塞等情况,从而影响其他进入的请求,进而影响redis处理请求的效率。
技术实现要素:
4.鉴于上述问题,本公开提供了一种请求处理方法、数据获取方法、装置、设备、介质和程序产品。
5.根据本公开的一个方面,提供了一种请求处理方法,包括:
6.接收来自客户端的数据缓存请求,其中,上述数据缓存请求包括待缓存键名和待缓存键值;
7.在确定上述待缓存键值的数据类型为字符串类型的情况下,确定上述待缓存键值的字节数;
8.在确定上述待缓存键值的字节数超过预设阈值的情况下,按照预设拆分规则对上述待缓存键值进行拆分,得到至少两个子键值,其中每个上述子键值具有拆分标识;
9.针对上述至少两个子键值中的每个子键值,根据上述子键值的拆分标识和上述待缓存键名生成与上述子键值对应的子键名,得到子数据缓存请求,最终得到至少两个上述子数据缓存请求,其中,上述子数据缓存请求包括上述子键名和上述子键值;
10.根据预设的第一标识和上述至少两个子键值的数目更新上述待缓存键值,得到更新后的数据缓存请求,其中,上述更新后的数据缓存请求包括上述待缓存键名和更新后的待缓存键值;以及
11.向缓存服务器发送上述至少两个子数据缓存请求和上述更新后的数据缓存请求。
12.根据本公开的实施例,上述请求处理方法还包括:
13.在上述按照预设拆分规则对上述待缓存键值进行拆分,得到至少两个子键值之前,调用预设的压缩工具对上述待缓存键值进行压缩处理,得到压缩键值;
14.其中,在确定上述待缓存键值的字节数超过预设阈值的情况下,按照预设拆分规则对上述待缓存键值进行拆分,得到至少两个子键值包括:
15.在确定压缩后键值的字节数超过上述预设阈值的情况下,按照预设拆分规则对上
述压缩键值进行拆分,得到上述至少两个子键值。
16.根据本公开的实施例,上述请求处理方法还包括:
17.在确定压缩键值的字节数未超过上述预设阈值的情况下,利用预设的第二标识和上述压缩后键值更新上述待缓存键值,得到新的键值;
18.根据上述待缓存键名和上述新的键值生成新的数据缓存请求;
19.向上述缓存服务器发送上述新的数据缓存请求。
20.根据本公开的实施例,上述按照预设拆分规则对上述压缩键值进行拆分,得到上述至少两个子键值包括:
21.循环地执行如下操作,直至压缩键值的当前字节数小于或等于预设数目的字节数:
22.以上述压缩键值的当前字节数中的第一个字节为起点,沿第一方向移动预设数目的字节数后拆分,得到一个子键值,其中,当前字节数为压缩键值中未拆分的字符串的字节数。
23.根据本公开的实施例,上述请求处理方法还包括:
24.在确定上述待缓存键值的数据类型不是字符串类型的情况下,利用与上述待缓存键值的数据类型对应的格式转换方式,对上述待缓存键值进行格式转换,得到字符串类型的待缓存键值。
25.本公开的另一个方面提供了一种数据获取方法,包括:
26.接收来自客户端的数据获取请求,其中,上述数据获取请求包括目标键名;
27.根据上述目标键名获取与上述目标键名对应的目标键值;
28.在确定上述目标键值包括第一标识的情况下,获取上述目标键值中包含的目标子键值的目标数目;
29.根据上述目标键名和上述目标数目确定至少两个目标子健名;
30.针对上述至少两个目标子健名中的每个目标子键名,根据上述目标子键名获取与上述目标子键名对应的目标子键值,得到至少两个上述目标子键值;以及
31.拼接至少两个上述目标子键值,得到拼接键值,并向上述客户端发送上述拼接键值。
32.根据本公开的实施例,上述数据获取方法还包括:
33.在向上述客户端发送上述拼接键值之前,在确定上述拼接键值被压缩的情况下,调用预设的压缩工具对上述拼接键值进行解压处理,得到第一解压键值;
34.其中,向上述客户端发送上述拼接键值包括:
35.向上述客户端发送上述第一解压键值。
36.根据本公开的实施例,上述数据获取方法还包括:
37.在确定上述目标键值中包括第二标识的情况下,调用预设的压缩工具对上述目标键值进行解压处理,得到第二解压键值;向上述客户端发送上述第二解压键值。
38.根据本公开的实施例,上述数据获取方法还包括:
39.在确定上述目标键值中不包括第一标识和第二标识的情况下,向上述客户端发送上述目标键值。
40.本公开的另一个方面提供了一种请求处理装置,包括:
41.第一接收模块,用于接收来自客户端的数据缓存请求,其中,上述数据缓存请求包括待缓存键名和待缓存键值;
42.第一确定模块,用于在确定上述待缓存键值的数据类型为字符串类型的情况下,确定上述待缓存键值的字节数;
43.拆分模块,用于在确定上述待缓存键值的字节数超过预设阈值的情况下,按照预设拆分规则对上述待缓存键值进行拆分,得到至少两个子键值,其中每个上述子键值具有拆分标识;
44.第一生成模块,用于针对上述至少两个子键值中的每个子键值,根据上述子键值的拆分标识和上述待缓存键名生成与上述子键值对应的子键名,得到子数据缓存请求,最终得到至少两个上述子数据缓存请求,其中,上述子数据缓存请求包括上述子键名和上述子键值;
45.第一更新模块,用于根据预设的第一标识和上述至少两个子键值的数目更新上述待缓存键值,得到更新后的数据缓存请求,其中,上述更新后的数据缓存请求包括上述待缓存键名和更新后的待缓存键值;以及
46.第一发送模块,用于向缓存服务器发送上述至少两个子数据缓存请求和上述更新后的数据缓存请求。
47.本公开的另一个方面提供了一种数据获取装置,包括:
48.第二接收模块,用于接收来自客户端的数据获取请求,其中,上述数据获取请求包括目标键名;
49.第一获取模块,用于根据上述目标键名获取与上述目标键名对应的目标键值;
50.第二获取模块,用于在确定上述目标键值包括第一标识的情况下,获取上述目标键值中包含的目标子键值的目标数目;
51.第二确定模块,用于根据上述目标键名和上述目标数目确定至少两个目标子健名;
52.第三获取模块,用于针对上述至少两个目标子健名中的每个目标子键名,根据上述目标子键名获取与上述目标子键名对应的目标子键值,得到至少两个上述目标子键值;以及
53.拼接模块,用于拼接至少两个上述目标子键值,得到拼接键值,并向上述客户端发送上述拼接键值。
54.本公开的另一个方面提供了一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得一个或多个处理器执行上述方法。
55.本公开的另一个方面还提供了一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行上述方法。
56.本公开的另一个方面还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述方法。
57.根据本公开的实施例,因为采用了在数据缓存请求中的待缓存键值的数据类型为字符串类型且待缓存键值的字节数超过预设阈值的情况下,按照预设拆分规则对待缓存键值进行拆分,得到至少两个子键值,其中每个子键值具有拆分标识;然后针对至少两个子键
值中的每个子键值,根据子键值的拆分标识和待缓存键名生成与子键值对应的子键名,得到子数据缓存请求,最终得到至少两个子数据缓存请求,其中,子数据缓存请求包括子键名和子键值;之后根据预设的第一标识和至少两个子键值的数目更新待缓存键值,得到更新后的数据缓存请求,其中,更新后的数据缓存请求包括待缓存键名和更新后的待缓存键值;之后向缓存服务器发送至少两个子数据缓存请求和更新后的数据缓存请求的技术手段,由于在缓存请求较大时,根据待缓存键值的字节数对待缓存键值进行拆分处理,将缓存请求拆分为多个子缓存请求后发送给缓存服务器,所以至少部分地克服了当缓存请求过大时,导致的redis性能会下降,且容易存在阻塞等情况,从而影响其他请求进入的技术问题,进而达到了提高缓存请求处理效率的技术效果。
附图说明
58.通过以下参照附图对本公开实施例的描述,本公开的上述内容以及其他目的、特征和优点将更为清楚,在附图中:
59.图1示意性示出了根据本公开实施例的请求处理方法、数据获取方法、装置、设备、介质和程序产品的应用场景图;
60.图2示意性示出了根据本公开实施例的请求处理方法的流程图;
61.图3示意性示出了根据本公开另一实施例的请求处理方法的流程图;
62.图4示意性示出了根据本公开实施例的数据获取方法的流程图;
63.图5示意性示出了根据本公开另一实施例的数据获取方法的流程图;
64.图6示意性示出了根据本公开实施例的请求处理装置的结构框图;
65.图7示意性示出了根据本公开实施例的数据获取装置的结构框图;以及
66.图8示意性示出了根据本公开实施例的适于实现上述方法的电子设备的方框图。
具体实施方式
67.以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
68.在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
69.在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
70.在使用类似于“a、b和c等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有a、b和c中至少一个的系统”应包括但不限于单独具有a、单独具有b、单独具有c、具有a和b、具有a和c、具有b和c、和/或具有a、b、c的系统等)。
71.redis是一个开源的,内存储存的数据结构服务器,广泛用作数据库、缓存和消息代理。它支持支持字符串、哈希表、列表、集合、有序集合、位图等数据类型。redis内置赋值、lua脚本、lru收回、事务以及不同级别磁盘持久化功能,同时通过redis sentinel提供高可用,通过redis cluster提供自动分区。
72.但是,当redis处理的请求过大时,性能会明显下降;同时由于redis是单线程的,当处理的请求较大时容易存在阻塞等情况,从而影响其他进入的请求,进而影响redis处理请求的效率。
73.有鉴于此,本公开针对以上技术问题,提供一种请求处理方法,在获取的缓存请求过大时,根据待缓存键值的字节数对待缓存键值进行拆分处理,将缓存请求拆分为多个子缓存请求后发送给redis服务器。从而避免了redis处理过大的请求,有效提升redis处理请求的效率。
74.具体地,本公开的实施例提供了一种请求处理方法,包括:接收来自客户端的数据缓存请求,其中,数据缓存请求包括待缓存键名和待缓存键值;在确定待缓存键值的数据类型为字符串类型的情况下,确定待缓存键值的字节数;在确定待缓存键值的字节数超过预设阈值的情况下,按照预设拆分规则对待缓存键值进行拆分,得到至少两个子键值,其中每个子键值具有拆分标识;针对至少两个子键值中的每个子键值,根据子键值的拆分标识和待缓存键名生成与子键值对应的子键名,得到子数据缓存请求,最终得到至少两个子数据缓存请求,其中,子数据缓存请求包括子键名和子键值;根据预设的第一标识和至少两个子键值的数目更新待缓存键值,得到更新后的数据缓存请求,其中,更新后的数据缓存请求包括待缓存键名和更新后的待缓存键值;以及向缓存服务器发送至少两个子数据缓存请求和更新后的数据缓存请求。
75.需要说明的是,本公开实施例提供的请求处理方法和装置可用于计算机领域和金融领域。本公开实施例提供的请求处理方法和装置也可用于除计算机领域和金融领域之外的任意领域。本公开实施例提供的请求处理方法和装置的应用领域不做限定。
76.在本公开的技术方案中,在获取或采集用户个人信息之前,均获取了用户的授权或同意。
77.在本公开的技术方案中,对数据的获取、收集、存储、使用、加工、传输、提供、公开和应用等处理,均符合相关法律法规的规定,采取了必要保密措施,且不违背公序良俗。
78.图1示意性示出了根据本公开实施例的请求处理方法、数据获取方法、装置、设备、介质和程序产品的应用场景图。
79.如图1所示,根据该实施例的应用场景100可以包括第一终端设备101、第二终端设备102、第三终端设备103、网络104和服务器105。网络104用以在第一终端设备101、第二终端设备102、第三终端设备103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
80.用户可以使用第一终端设备101、第二终端设备102、第三终端设备103中的至少一个通过网络104与服务器105交互,以接收或发送消息等。第一终端设备101、第二终端设备102、第三终端设备103上可以安装有各种通讯客户端应用,例如金融类应用、购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
81.第一终端设备101、第二终端设备102、第三终端设备103可以是具有显示屏并且支
持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
82.服务器105可以是提供各种服务的服务器,例如对用户利用第一终端设备101、第二终端设备102、第三终端设备103所浏览的网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的用户请求等数据进行分析等处理,并将处理结果(例如根据用户请求获取或生成的网页、信息、或数据等)反馈给终端设备。
83.需要说明的是,本公开实施例所提供的请求处理方法、数据获取方法一般可以由服务器105执行。相应地,本公开实施例所提供的请求处理装置、数据获取装置一般可以设置于服务器105中。本公开实施例所提供的请求处理方法、数据获取方法也可以由不同于服务器105且能够与第一终端设备101、第二终端设备102、第三终端设备103和/或服务器105通信的服务器或服务器集群执行。相应地,本公开实施例所提供的请求处理装置、数据获取装置也可以设置于不同于服务器105且能够与第一终端设备101、第二终端设备102、第三终端设备103和/或服务器105通信的服务器或服务器集群中。
84.应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
85.以下将基于图1描述的场景,通过图2~图5对公开实施例的请求处理方法、数据获取方法进行详细描述。
86.图2示意性示出了根据本公开实施例的请求处理方法的流程图。
87.如图2所示,该实施例的请求处理方法包括操作s210~操作s260,该请求处理方法可以由服务器执行。
88.在操作s210,接收来自客户端的数据缓存请求,其中,上述数据缓存请求包括待缓存键名和待缓存键值。
89.在操作s220,在确定上述待缓存键值的数据类型为字符串类型的情况下,确定上述待缓存键值的字节数。
90.根据本公开的实施例,字符串一般由数字、字母、下划线组成的一串字符。
91.在操作s230,在确定上述待缓存键值的字节数超过预设阈值的情况下,按照预设拆分规则对上述待缓存键值进行拆分,得到至少两个子键值,其中每个上述子键值具有拆分标识。
92.根据本公开的实施例,预设阈值可以是预先设置的待缓存键值的最大字节数。例如,预设阈值可以为1024字节。
93.根据本公开的实施例,在待缓存键值的字节数超过1024字节的情况下,则需要对待缓存键值进行拆分处理。
94.根据本公开的实施例,预设拆分规则可以包括按照待缓存键值的字符串顺序,以预设字符长度进行拆分。例如,预设字符长度为1024,预设拆分规则可以是按照待缓存键值的字符串顺序,每隔1024个字节拆分成一个子键值。具体地,例如,待缓存键值包括2048个字节,则按照待缓存键值的字符串顺序,每隔1024个字节拆分成一个子键值,得到两个子键值,其中,每个子键值包括1024个字节。
95.根据本公开的实施例,拆分标识用于表征子键值的拆分次序。例如,待缓存键值按顺序被拆分为子键值1、子键值2和子键值3,则子键值1的拆分标识可以为1,子键值2的拆分
标识可以为2,子键值3的拆分标识可以为3。
96.根据本公开的实施例,拆分标识能够快速识别至少两个子键值的排列顺序,便于在获取数据时对至少两个子键值进行拼接,得到待缓存键值。
97.在操作s240,针对上述至少两个子键值中的每个子键值,根据上述子键值的拆分标识和上述待缓存键名生成与上述子键值对应的子键名,得到子数据缓存请求,最终得到至少两个上述子数据缓存请求,其中,上述子数据缓存请求包括上述子键名和上述子键值。
98.根据本公开的实施例,根据上述子键值的拆分标识和上述待缓存键名生成与上述子键值对应的子键名,得到子数据缓存请求可以包括:将子键值的拆分标识和待缓存键名组合,生成与上述子键值对应的子键名;然后根据子键名和子键值生成子数据缓存请求。
99.在其中一个实施例中,根据上述子键值的拆分标识和上述待缓存键名生成与上述子键值对应的子键名,得到子数据缓存请求可以包括:将子键值1的拆分标识例如1和待缓存键名例如key组合,生成与子键值1对应的子键名例如key1;然后将子键名key1和子键值1例如“key1:1”作为子缓存请求。
100.在操作s250,根据预设的第一标识和上述至少两个子键值的数目更新上述待缓存键值,得到更新后的数据缓存请求,其中,上述更新后的数据缓存请求包括上述待缓存键名和更新后的待缓存键值。
101.根据本公开的实施例,根据预设的第一标识和上述至少两个子键值的数目更新上述待缓存键值可以包括:将第一标识和子键值的数目组合,得到更新后的待缓存键值。例如,第一标识为seperated#,子键值的数目为3,则更新后的待缓存键值可以为“seperated#3”。
102.根据本公开的实施例,更新后的数据缓存请求包括上述待缓存键名和更新后的待缓存键值可以包括:更新后的数据缓存请求中待缓存键名不变,而利用更新后的待缓存键值替换待缓存键值。例如,待缓存键名为key,待缓存键值为val,更新后的待缓存键值为seperated#3,则原始的数据缓冲请求可以是键值对“key:val”,而更新后的数据缓冲请求变为键值对“key:seperated#3”。
103.在操作s260,向缓存服务器发送上述至少两个子数据缓存请求和上述更新后的数据缓存请求。
104.在其中一个实施例中,数据缓存请求包括键值对“key:val”,其中,key为待缓存键名,val为待缓存键值,且v、a、l均为1024字节的字符串,并设定预设阈值为1024。由于待缓存键值的字节数超过了预设阈值,则需要按照顺序将val以字符长度1024字节拆分为3个字符串,得到3个子键值v、a、l,其中,v、a、l的拆分标记分别为1、2、3;然后,将待缓存键名key分别与拆分标记1、2、3进行组合,得到3个子键名key1、key2、key3;之后,将子键名与子键值组合,得到3个子数据缓存请求例如键值对“key1:v”、“key2:a”、“key3:l”;之后,利用第一标识例如seperated#与子键值的数目3组合,得到更新后的待缓存键值seperated#3”,从而得到更新后的数据缓存请求例如键值对“key:seperated#3”;之后将3个子数据缓存请求和更新后的数据缓存请求发给redis服务器。
105.根据本公开的实施例,因为采用了在数据缓存请求中的待缓存键值的数据类型为字符串类型且待缓存键值的字节数超过预设阈值的情况下,按照预设拆分规则对待缓存键值进行拆分,得到至少两个子键值,其中每个子键值具有拆分标识;然后针对至少两个子键
值中的每个子键值,根据子键值的拆分标识和待缓存键名生成与子键值对应的子键名,得到子数据缓存请求,最终得到至少两个子数据缓存请求,其中,子数据缓存请求包括子键名和子键值;之后根据预设的第一标识和至少两个子键值的数目更新待缓存键值,得到更新后的数据缓存请求,其中,更新后的数据缓存请求包括待缓存键名和更新后的待缓存键值;之后向缓存服务器发送至少两个子数据缓存请求和更新后的数据缓存请求的技术手段,由于在缓存请求较大时,根据待缓存键值的字节数对待缓存键值进行拆分处理,将缓存请求拆分为多个子缓存请求后发送给缓存服务器,所以至少部分地克服了当缓存请求过大时,导致的redis性能会下降,且容易存在阻塞等情况,从而影响其他请求进入的技术问题,进而达到了提高缓存请求处理效率的技术效果。
106.根据本公开的实施例,上述请求处理方法还包括:
107.在上述按照预设拆分规则对上述待缓存键值进行拆分,得到至少两个子键值之前,调用预设的压缩工具对上述待缓存键值进行压缩处理,得到压缩键值;
108.其中,在确定上述待缓存键值的字节数超过预设阈值的情况下,按照预设拆分规则对上述待缓存键值进行拆分,得到至少两个子键值包括:
109.在确定压缩后键值的字节数超过上述预设阈值的情况下,按照预设拆分规则对上述压缩键值进行拆分,得到上述至少两个子键值。
110.根据本公开的实施例,在进行拆分处理之前,先利用压缩工具对待缓存键值进行压缩,在压缩后的待缓存键值超过预设阈值的情况下,再对压缩键值进行压缩处理;若压缩键值为超过预设阈值,则无需进行压缩处理。从而有助于降低数据缓存请求的处理步骤,进一步提高数据缓存请求的处理效率。
111.根据本公开的实施例,上述请求处理方法还包括:
112.在确定压缩键值的字节数未超过上述预设阈值的情况下,利用预设的第二标识和上述压缩键值更新上述待缓存键值,得到新的键值;
113.根据上述待缓存键名和上述新的键值生成新的数据缓存请求;
114.向上述缓存服务器发送上述新的数据缓存请求。
115.根据本公开的实施例,第二标识可以是与第一标识不同的任意标识。第一标识和第二标识能够区分对待缓存键值的处理过程。
116.根据本公开的实施例,利用预设的第二标识和上述压缩键值更新上述待缓存键值,得到新的键值可以包括:将第二标识和压缩键值组合,得到新的键值。然后利用新的键值替换待缓存键值,得到新的数据缓存请求。
117.在其中一个实施例中,数据缓存请求包括键值对“key:val”,其中,待缓存键名为key,待缓存键值为val,第二标识为zipped#,对待缓存键值压缩后得到的压缩键值为val-1,其中,val-1的字节数小于预设阈值。则利用预设的第二标识和上述压缩键值更新上述待缓存键值,得到新的键值可以包括:将第二标识zipped#与压缩键值val-1组合,得到新的键值zipped#val-1,并用新的键值zipped#val-1替换待缓存键值val,得到新的数据缓存请求例如包括键值对“key:zipped#val-1”118.根据本公开的实施例,上述按照预设拆分规则对上述压缩键值进行拆分,得到上述至少两个子键值包括:循环地执行如下操作,直至压缩键值的当前字节数小于或等于预设数目的字节数:
119.以上述压缩键值的当前字节数中的第一个字节为起点,沿第一方向移动预设数目的字节数后拆分,得到一个子键值,其中,当前字节数为压缩键值中未拆分的字符串的字节数。
120.根据本公开的实施例,第一方向可以是从左向右的方向,也可以是从右向左的方向。
121.根据本公开的实施例,压缩键值的当前字节数为2049,预设数目的字节数为1024,则以上述压缩键值的当前字节数中的第一个字节为起点,沿第一方向移动预设数目的字节数后拆分,得到一个子键值可以包括:2049的第一个字节为起点,从左向右移动1024个字节数后进行拆分,得到第一个子键值。然后剩下的1025字节数为当前字节数,并以1025字节中的第一个字节为起点,继续从左向右移动1024个字节数,后进行拆分得到第二个子键值,如此循环,直至当前字节数小于或等于1024。
122.根据本公开的实施例,上述请求处理方法还包括:在确定上述待缓存键值的数据类型不是字符串类型的情况下,利用与上述待缓存键值的数据类型对应的格式转换方式,对上述待缓存键值进行格式转换,得到字符串类型的待缓存键值。
123.根据本公开的实施例,redis支持字符串、哈希表、列表、集合、有序集合、位图等数据类型。在待缓存键值不是字符串的数据类型的情况下,需对待缓存键值的数据类型进行转换。
124.图3示意性示出了根据本公开另一实施例的请求处理方法的流程图。
125.如图3所示,该实施例的请求处理方法包括操作s301~操作s314。
126.在操作s301,接收来自客户端的数据缓存请求,其中,数据缓存请求包括待缓存键名和待缓存键值。
127.在操作s302,判断待缓存键值的数据类型是否为字符串类型。在确定待缓存键值的数据类型不是字符串类型的情况下,执行操作s303;在确定待缓存键值的数据类型是字符串类型的情况下,执行操作s304。
128.在操作s303,利用与待缓存键值的数据类型对应的格式转换方式,对待缓存键值进行格式转换,得到字符串类型的待缓存键值,然后执行操作s304。
129.在操作s304,判断待缓存键值的字节数是否超过预设阈值。在确定待缓存键值的字节数超过预设阈值的情况下,执行操作s305;在确定待缓存键值的字节数未超过预设阈值的情况下,执行操作s314。
130.在操作s305,调用预设的压缩工具对待缓存键值进行压缩处理,得到压缩键值。
131.在操作s306,判断压缩键值的字节数是否超过预设阈值。在确定压缩键值的字节数超过预设阈值的情况下,执行操作s307~操作310;在确定压缩键值的字节数未超过预设阈值的情况下,执行操作s311~操作s313。
132.在操作s307,按照预设拆分规则对压缩键值进行拆分,得到至少两个子键值,其中每个子键值具有拆分标识。
133.在操作s308,针对至少两个子键值中的每个子键值,根据子键值的拆分标识和待缓存键名生成与子键值对应的子键名,得到子数据缓存请求,最终得到至少两个子数据缓存请求,其中,子数据缓存请求包括子键名和子键值。
134.在操作s309,根据预设的第一标识和至少两个子键值的数目更新待缓存键值,得
到更新后的数据缓存请求,其中,更新后的数据缓存请求包括待缓存键名和更新后的待缓存键值。
135.在操作s310,向缓存服务器发送至少两个子数据缓存请求和更新后的数据缓存请求。
136.在操作s311,利用预设的第二标识和压缩键值更新待缓存键值,得到新的键值。
137.在操作s312,根据待缓存键名和新的键值生成新的数据缓存请求。
138.在操作s313,向缓存服务器发送新的数据缓存请求。
139.在操作s314,直接缓存向服务器发送数据缓存请求。
140.根据本公开的实施例,在获取的数据缓存请求过大时,根据待缓存键值的字节数对待缓存键值进行拆分处理,将数据缓存请求拆分为多个子缓存请求后发送给redis服务器。避免了redis处理过大的请求,从而有效提升redis处理请求的效率。
141.图4示意性示出了根据本公开实施例的数据获取方法的流程图。
142.如图4所示,该实施例的数据获取方法包括操作s410~操作s460。
143.在操作s410,接收来自客户端的数据获取请求,其中,上述数据获取请求包括目标键名。
144.在操作s420,根据上述目标键名获取与上述目标键名对应的目标键值。
145.根据本公开的实施例,缓存服务器采用键值对的结构存储数据,根据目标键名可以从缓存服务器中获取与模板键名对应的目标键值。
146.在操作s430,在确定上述目标键值包括第一标识的情况下,获取上述目标键值中包含的目标子键值的目标数目。
147.根据本公开的实施例,在目标键值包括第一标识的情况下,说明目标键值是由第一标识和目标子键值的数目组合得到的,从而可以得到目标子键值的目标数目。
148.在其中一个实施例中,第一标识为seperated#,目标键值为seperated#3,由于目标键值包括第一标识seperated#,则3为目标子键值的目标数目。
149.在操作s440,根据上述目标键名和上述目标数目确定至少两个目标子健名。
150.根据本公开的实施例,由于缓冲服务器采用键值对结构存储,在存在3个目标子键值的情况下,则存在3个目标子键名。由上述请求处理方法可知,目标子键名是由目标子键值的拆分标识和目标键名组合生成,则目标子键名可以分别是目标键名+拆分标识例如1、2、3。
151.在其中一个实施例中,目标键名为key,拆分标识分别为1、2、3,则得到的3个目标子键名可以包括key1、key2和key3,然后根据目标子键名获取对应的目标子键值。
152.在操作s450,针对上述至少两个目标子健名中的每个目标子键名,根据上述目标子键名获取与上述目标子键名对应的目标子键值,得到至少两个上述目标子键值。
153.在操作s460,拼接至少两个上述目标子键值,得到拼接键值,并向上述客户端发送上述拼接键值。
154.根据本公开的实施例,目标子键值是由经键值拆分得到的,在得到目标子键值后,按照拆分顺序进行拼接即可得到拼接键值,即与目标键名对应的所需的键值。
155.根据本公开的实施例,上述数据获取方法还包括:
156.在向上述客户端发送上述拼接键值之前,在确定上述拼接键值被压缩的情况下,
调用预设的压缩工具对上述拼接键值进行解压处理,得到第一解压键值;其中,向上述客户端发送上述拼接键值包括:向上述客户端发送上述第一解压键值。
157.根据本公开的实施例,上述数据获取方法还包括:
158.在确定上述目标键值中包括第二标识的情况下,调用预设的压缩工具对上述目标键值进行解压处理,得到第二解压键值;向上述客户端发送上述第二解压键值。
159.根据本公开的实施例,第二标识可以是与第一标识不同的任意标识。例如,第二标识可以包括zipped#。
160.根据本公开的实施例,在目标键值中包括第二标识时,说明目标键值仅经过了压缩处理,此时调用压缩工具进行解压即可得到与目标键名对应的所需的键值。
161.根据本公开的实施例,上述数据获取方法还包括:
162.在确定上述目标键值中不包括第一标识和第二标识的情况下,向上述客户端发送上述目标键值。
163.根据本公开的实施例,在目标键值中既不包括第一标识也不包括第二标识时,说明目标键值未进行处理,即目标键值即为与目标键名对应的所需的键值。
164.图5示意性示出了根据本公开另一实施例的数据获取方法的流程图。
165.如图5所示,该实施例的数据获取方法包括操作s501~操作s511。
166.在操作s501,接收来自客户端的数据获取请求,其中,数据获取请求包括目标键名。
167.在操作s502,根据目标键名获取与目标键名对应的目标键值。
168.在操作s503,判断目标键值是否包括第一标识。在确定目标键值不包括第一标识的情况下,执行操作s504;在确定目标键值包括第一标识的情况下,执行操作s508~操作s511。
169.在操作s504,判断目标键值是否包括第二标识。在确定目标键值不包括第二标识的情况下,执行操作s505;在确定目标键值包括第二标识的情况下,执行操作s506~操作s507。
170.在操作s505,向客户端发送目标键值。
171.在操作s506,调用预设的压缩工具对目标键值进行解压处理,得到第二解压键值。
172.在操作s507,向客户端发送第二解压键值。
173.在操作s508,获取目标键值中包含的目标子键值的目标数目。
174.在操作s509,根据目标键名和目标数目确定至少两个目标子健名。
175.在操作s510,针对至少两个目标子健名中的每个目标子键名,根据目标子键名获取与目标子键名对应的目标子键值,得到至少两个目标子键值。
176.在操作s511,拼接至少两个目标子键值,得到拼接键值,并向客户端发送拼接键值。
177.需要说明的是,本公开实施例中的流程图所示的操作除非明确说明不同操作之间存在执行的先后顺序,或者不同操作在技术实现上存在执行的先后顺序,否则,多个操作之间的执行顺序可以不分先后,多个操作也可以同时执行。
178.基于上述请求处理方法,本公开还提供了一种请求处理装置。以下将结合图6对该装置进行详细描述。
179.图6示意性示出了根据本公开实施例的请求处理装置的结构框图。
180.如图6所示,该实施例的请求处理装置600包括第一接收模块610、第一确定模块620、拆分模块630、第一生成模块640、第一更新模块650和第一发送模块660。
181.第一接收模块610用于接收来自客户端的数据缓存请求,其中,上述数据缓存请求包括待缓存键名和待缓存键值。在一实施例中,第一接收模块610可以用于执行前文描述的操作s210,在此不再赘述。
182.第一确定模块620用于在确定上述待缓存键值的数据类型为字符串类型的情况下,确定上述待缓存键值的字节数。在一实施例中,第一确定模块620可以用于执行前文描述的操作s220,在此不再赘述。
183.拆分模块630用于在确定上述待缓存键值的字节数超过预设阈值的情况下,按照预设拆分规则对上述待缓存键值进行拆分,得到至少两个子键值,其中每个上述子键值具有拆分标识。在一实施例中,拆分模块630可以用于执行前文描述的操作s230,在此不再赘述。
184.第一生成模块640用于针对上述至少两个子键值中的每个子键值,根据上述子键值的拆分标识和上述待缓存键名生成与上述子键值对应的子键名,得到子数据缓存请求,最终得到至少两个上述子数据缓存请求,其中,上述子数据缓存请求包括上述子键名和上述子键值。在一实施例中,第一生成模块640可以用于执行前文描述的操作s240,在此不再赘述。
185.第一更新模块650用于根据预设的第一标识和上述至少两个子键值的数目更新上述待缓存键值,得到更新后的数据缓存请求,其中,上述更新后的数据缓存请求包括上述待缓存键名和更新后的待缓存键值。在一实施例中,第一更新模块650可以用于执行前文描述的操作s250,在此不再赘述。
186.第一发送模块660用于向缓存服务器发送上述至少两个子数据缓存请求和上述更新后的数据缓存请求。在一实施例中,第一发送模块660可以用于执行前文描述的操作s260,在此不再赘述。
187.根据本公开的实施例,上述请求处理装置还包括:第一调用模块。
188.第一调用模块,用于在上述按照预设拆分规则对上述待缓存键值进行拆分,得到至少两个子键值之前,调用预设的压缩工具对上述待缓存键值进行压缩处理,得到压缩键值。
189.根据本公开的实施例,拆分模块还用于在确定压缩后键值的字节数超过上述预设阈值的情况下,按照预设拆分规则对上述压缩键值进行拆分,得到上述至少两个子键值。
190.根据本公开的实施例,上述请求处理装置还包括:第二更新模块、第二生成模块和第二发送模块。
191.第二更新模块,用于在确定压缩键值的字节数未超过上述预设阈值的情况下,利用预设的第二标识和上述压缩后键值更新上述待缓存键值,得到新的键值。
192.第二生成模块,用于根据上述待缓存键名和上述新的键值生成新的数据缓存请求。
193.第二发送模块,用于向上述缓存服务器发送上述新的数据缓存请求。
194.根据本公开的实施例,上述拆分模块包括:拆分单元。
195.拆分单元,用于循环地执行如下操作,直至压缩键值的当前字节数小于或等于预设数目的字节数:以上述压缩键值的当前字节数中的第一个字节为起点,沿第一方向移动预设数目的字节数后拆分,得到一个子键值,其中,当前字节数为压缩键值中未拆分的字符串的字节数。
196.根据本公开的实施例,上述请求处理装置还包括:格式转换模块。
197.格式转换模块,用于在确定上述待缓存键值的数据类型不是字符串类型的情况下,利用与上述待缓存键值的数据类型对应的格式转换方式,对上述待缓存键值进行格式转换,得到字符串类型的待缓存键值。
198.根据本公开的实施例,第一接收模块610、第一确定模块620、拆分模块630、第一生成模块640、第一更新模块650和第一发送模块660中的任意多个模块可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本公开的实施例,第一接收模块610、第一确定模块620、拆分模块630、第一生成模块640、第一更新模块650和第一发送模块660中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(fpga)、可编程逻辑阵列(pla)、片上系统、基板上的系统、封装上的系统、专用集成电路(asic),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,第一接收模块610、第一确定模块620、拆分模块630、第一生成模块640、第一更新模块650和第一发送模块660中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
199.需要说明的是,本公开的实施例中请求处理装置部分与本公开的实施例中请求处理方法部分是相对应的,请求处理装置部分的描述具体参考请求处理方法部分,在此不再赘述。
200.基于上述数据获取方法,本公开还提供了一种数据获取装置。以下将结合图7对该装置进行详细描述。
201.图7示意性示出了根据本公开实施例的数据获取装置的结构框图。
202.如图7所示,该实施例的数据获取装置700包括第二接收模块710、第一获取模块720、第二获取模块730、第二确定模块740、第三获取模块750和拼接模块760。
203.第二接收模块710用于接收来自客户端的数据获取请求,其中,上述数据获取请求包括目标键名。
204.第一获取模块720用于根据上述目标键名获取与上述目标键名对应的目标键值。
205.第二获取模块730用于在确定上述目标键值包括第一标识的情况下,获取上述目标键值中包含的目标子键值的目标数目。
206.第二确定模块740用于根据上述目标键名和上述目标数目确定至少两个目标子健名。
207.第三获取模块750用于针对上述至少两个目标子健名中的每个目标子键名,根据上述目标子键名获取与上述目标子键名对应的目标子键值,得到至少两个上述目标子键值。
208.拼接模块760用于拼接至少两个上述目标子键值,得到拼接键值,并向上述客户端
发送上述拼接键值。
209.根据本公开的实施例,上述数据获取装置还包括:第二调用模块。
210.第二调用模块,用于在向上述客户端发送上述拼接键值之前,在确定上述拼接键值被压缩的情况下,调用预设的压缩工具对上述拼接键值进行解压处理,得到第一解压键值。
211.根据本公开的实施例,拼接模块还用于向上述客户端发送上述第一解压键值。
212.根据本公开的实施例,上述数据获取装置还包括:第三调用模块和第三发送模块。
213.第三调用模块,用于在确定上述目标键值中包括第二标识的情况下,调用预设的压缩工具对上述目标键值进行解压处理,得到第二解压键值。
214.第三发送模块,用于向上述客户端发送上述第二解压键值。
215.根据本公开的实施例,上述数据获取装置还包括:第四发送模块。
216.第四发送模块,用于在确定上述目标键值中不包括第一标识和第二标识的情况下,向上述客户端发送上述目标键值。
217.根据本公开的实施例,第二接收模块710、第一获取模块720、第二获取模块730、第二确定模块740、第三获取模块750和拼接模块760中的任意多个模块可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本公开的实施例,第二接收模块710、第一获取模块720、第二获取模块730、第二确定模块740、第三获取模块750和拼接模块760中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(fpga)、可编程逻辑阵列(pla)、片上系统、基板上的系统、封装上的系统、专用集成电路(asic),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,第二接收模块710、第一获取模块720、第二获取模块730、第二确定模块740、第三获取模块750和拼接模块760中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
218.需要说明的是,本公开的实施例中数据获取装置部分与本公开的实施例中数据获取方法部分是相对应的,数据获取装置部分的描述具体参考数据获取方法部分,在此不再赘述。
219.图8示意性示出了根据本公开实施例的适于实现上述方法的电子设备的方框图。
220.如图8所示,根据本公开实施例的电子设备800包括处理器801,其可以根据存储在只读存储器(rom)802中的程序或者从存储部分808加载到随机访问存储器(ram)803中的程序而执行各种适当的动作和处理。处理器801例如可以包括通用微处理器(例如cpu)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(asic))等等。处理器801还可以包括用于缓存用途的板载存储器。处理器801可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
221.在ram 803中,存储有电子设备800操作所需的各种程序和数据。处理器801、rom 802以及ram 803通过总线804彼此相连。处理器801通过执行rom 802和/或ram 803中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,所述程序也可以存储在除rom 802和ram 803以外的一个或多个存储器中。处理器801也可以通过执行存储在所述一
个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。
222.根据本公开的实施例,电子设备800还可以包括输入/输出(i/o)接口805,输入/输出(i/o)接口805也连接至总线804。电子设备800还可以包括连接至i/o接口805的以下部件中的一项或多项:包括键盘、鼠标等的输入部分806;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分807;包括硬盘等的存储部分808;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分809。通信部分809经由诸如因特网的网络执行通信处理。驱动器810也根据需要连接至i/o接口805。可拆卸介质811,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器810上,以便于从其上读出的计算机程序根据需要被安装入存储部分808。
223.本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。
224.根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的rom 802和/或ram 803和/或rom 802和ram 803以外的一个或多个存储器。
225.本公开的实施例还包括一种计算机程序产品,其包括计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。当计算机程序产品在计算机系统中运行时,该程序代码用于使计算机系统实现本公开实施例所提供的方法。
226.在该计算机程序被处理器801执行时执行本公开实施例的系统/装置中限定的上述功能。根据本公开的实施例,上文描述的系统、装置、模块、单元等可以通过计算机程序模块来实现。
227.在一种实施例中,该计算机程序可以依托于光存储器件、磁存储器件等有形存储介质。在另一种实施例中,该计算机程序也可以在网络介质上以信号的形式进行传输、分发,并通过通信部分809被下载和安装,和/或从可拆卸介质811被安装。该计算机程序包含的程序代码可以用任何适当的网络介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
228.在这样的实施例中,该计算机程序可以通过通信部分809从网络上被下载和安装,和/或从可拆卸介质811被安装。在该计算机程序被处理器801执行时,执行本公开实施例的系统中限定的上述功能。根据本公开的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。
229.根据本公开的实施例,可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例提供的计算机程序的程序代码,具体地,可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。程序设计语言包括但不限于诸如java,c++,python,“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备
上执行、部分地在用户设备上执行、部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
230.附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
231.本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合或/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
232.以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。
技术特征:
1.一种请求处理方法,包括:接收来自客户端的数据缓存请求,其中,所述数据缓存请求包括待缓存键名和待缓存键值;在确定所述待缓存键值的数据类型为字符串类型的情况下,确定所述待缓存键值的字节数;在确定所述待缓存键值的字节数超过预设阈值的情况下,按照预设拆分规则对所述待缓存键值进行拆分,得到至少两个子键值,其中每个所述子键值具有拆分标识;针对所述至少两个子键值中的每个子键值,根据所述子键值的拆分标识和所述待缓存键名生成与所述子键值对应的子键名,得到子数据缓存请求,最终得到至少两个所述子数据缓存请求,其中,所述子数据缓存请求包括所述子键名和所述子键值;根据预设的第一标识和所述至少两个子键值的数目更新所述待缓存键值,得到更新后的数据缓存请求,其中,所述更新后的数据缓存请求包括所述待缓存键名和更新后的待缓存键值;以及向缓存服务器发送所述至少两个子数据缓存请求和所述更新后的数据缓存请求。2.根据权利要求1所述的方法,还包括:在所述按照预设拆分规则对所述待缓存键值进行拆分,得到至少两个子键值之前,调用预设的压缩工具对所述待缓存键值进行压缩处理,得到压缩键值;其中,在确定所述待缓存键值的字节数超过预设阈值的情况下,按照预设拆分规则对所述待缓存键值进行拆分,得到至少两个子键值包括:在确定压缩后键值的字节数超过所述预设阈值的情况下,按照预设拆分规则对所述压缩键值进行拆分,得到所述至少两个子键值。3.根据权利要求2所述的方法,还包括:在确定压缩键值的字节数未超过所述预设阈值的情况下,利用预设的第二标识和所述压缩后键值更新所述待缓存键值,得到新的键值;根据所述待缓存键名和所述新的键值生成新的数据缓存请求;向所述缓存服务器发送所述新的数据缓存请求。4.根据权利要求2或3所述的方法,其中,所述按照预设拆分规则对所述压缩键值进行拆分,得到所述至少两个子键值包括:循环地执行如下操作,直至压缩键值的当前字节数小于或等于预设数目的字节数:以所述压缩键值的当前字节数中的第一个字节为起点,沿第一方向移动预设数目的字节数后拆分,得到一个子键值,其中,当前字节数为压缩键值中未拆分的字符串的字节数。5.根据权利要求1所述的方法,还包括:在确定所述待缓存键值的数据类型不是字符串类型的情况下,利用与所述待缓存键值的数据类型对应的格式转换方式,对所述待缓存键值进行格式转换,得到字符串类型的待缓存键值。6.一种数据获取方法,包括:接收来自客户端的数据获取请求,其中,所述数据获取请求包括目标键名;根据所述目标键名获取与所述目标键名对应的目标键值;在确定所述目标键值包括第一标识的情况下,获取所述目标键值中包含的目标子键值
的目标数目;根据所述目标键名和所述目标数目确定至少两个目标子健名;针对所述至少两个目标子健名中的每个目标子键名,根据所述目标子键名获取与所述目标子键名对应的目标子键值,得到至少两个所述目标子键值;以及拼接至少两个所述目标子键值,得到拼接键值,并向所述客户端发送所述拼接键值。7.根据权利要求6所述的方法,还包括:在向所述客户端发送所述拼接键值之前,在确定所述拼接键值被压缩的情况下,调用预设的压缩工具对所述拼接键值进行解压处理,得到第一解压键值;其中,向所述客户端发送所述拼接键值包括:向所述客户端发送所述第一解压键值。8.根据权利要求6所述的方法,还包括:在确定所述目标键值中包括第二标识的情况下,调用预设的压缩工具对所述目标键值进行解压处理,得到第二解压键值;向所述客户端发送所述第二解压键值。9.根据权利要求6所述的方法,还包括:在确定所述目标键值中不包括第一标识和第二标识的情况下,向所述客户端发送所述目标键值。10.一种请求处理装置,包括:第一接收模块,用于接收来自客户端的数据缓存请求,其中,所述数据缓存请求包括待缓存键名和待缓存键值;第一确定模块,用于在确定所述待缓存键值的数据类型为字符串类型的情况下,确定所述待缓存键值的字节数;拆分模块,用于在确定所述待缓存键值的字节数超过预设阈值的情况下,按照预设拆分规则对所述待缓存键值进行拆分,得到至少两个子键值,其中每个所述子键值具有拆分标识;第一生成模块,用于针对所述至少两个子键值中的每个子键值,根据所述子键值的拆分标识和所述待缓存键名生成与所述子键值对应的子键名,得到子数据缓存请求,最终得到至少两个所述子数据缓存请求,其中,所述子数据缓存请求包括所述子键名和所述子键值;第一更新模块,用于根据预设的第一标识和所述至少两个子键值的数目更新所述待缓存键值,得到更新后的数据缓存请求,其中,所述更新后的数据缓存请求包括所述待缓存键名和更新后的待缓存键值;以及第一发送模块,用于向缓存服务器发送所述至少两个子数据缓存请求和所述更新后的数据缓存请求。11.一种数据获取装置,包括:第二接收模块,用于接收来自客户端的数据获取请求,其中,所述数据获取请求包括目标键名;第一获取模块,用于根据所述目标键名获取与所述目标键名对应的目标键值;第二获取模块,用于在确定所述目标键值包括第一标识的情况下,获取所述目标键值
中包含的目标子键值的目标数目;第二确定模块,用于根据所述目标键名和所述目标数目确定至少两个目标子健名;第三获取模块,用于针对所述至少两个目标子健名中的每个目标子键名,根据所述目标子键名获取与所述目标子键名对应的目标子键值,得到至少两个所述目标子键值;以及拼接模块,用于拼接至少两个所述目标子键值,得到拼接键值,并向所述客户端发送所述拼接键值。12.一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行根据权利要求1~9中任一项所述的方法。13.一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行根据权利要求1~9中任一项所述的方法。14.一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现根据权利要求1~9中任一项所述的方法。
技术总结
本公开提供了一种请求处理方法、数据获取方法、装置及电子设备,可应用于计算机和金融科技领域。该请求处理方法包括:接收来自客户端的数据缓存请求;在确定待缓存键值的数据类型为字符串类型的情况下,确定待缓存键值的字节数;在确定待缓存键值的字节数超过预设阈值的情况下,按照预设拆分规则对待缓存键值进行拆分,得到至少两个子键值;针对至少两个子键值中的每个子键值,根据子键值的拆分标识和待缓存键名生成与子键值对应的子键名,得到子数据缓存请求;根据预设的第一标识和至少两个子键值的数目更新待缓存键值,得到更新后的数据缓存请求;向缓存服务器发送至少两个子数据缓存请求和更新后的数据缓存请求。存请求和更新后的数据缓存请求。存请求和更新后的数据缓存请求。
技术研发人员:吕鸥 刘飞 朱嘉桐 高灵杰
受保护的技术使用者:中国工商银行股份有限公司
技术研发日:2023.07.13
技术公布日:2023/10/11
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
