一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种多字段Redis排行榜的生成方法、装置、设备和存储介质与流程

2021-09-04 02:45:00 来源:中国专利 TAG:多字 装置 生成 排行榜 方法

一种多字段redis排行榜的生成方法、装置、设备和存储介质
技术领域
1.本申请涉及计算机网络技术领域,尤其涉及一种多字段redis排行榜的生成方法、装置、设备和存储介质。


背景技术:

2.随着计算机网络技术的发展,游戏作为娱乐消遣的一种方式,越来越多的人们在闲暇之余通过玩游戏放松心情。游戏中一般设置有各种各样的排行榜,以对玩家的特定属性进行排序,例如,时尚值排行榜、胜场次数排行榜、游戏积分排行榜、游戏时间排行榜等。
3.redis数据库的有序集合可对分数和数据值进行存储并对分数进行排序,据此可实现游戏排行榜功能。通过redis数据库生成排行榜时,单一字段(例如实力或等级等)的排行榜准确率较高,但是对多字段(例如对实力和经验进行综合排序)的排行榜,准确率较低。
4.因此,提供一种准确率较高的多字段redis排行榜的生成方法是本领域技术人员亟待解决的技术问题。


技术实现要素:

5.本申请提供了一种多字段redis排行榜的生成方法、装置、设备和存储介质,解决了现有通过redis数据库生成排行榜时,单一字段的排行榜准确率较高,但是对多字段的排行榜,准确率较低的技术问题。
6.有鉴于此,本申请第一方面提供了一种多字段redis排行榜的生成方法,包括:
7.获取用于生成排行榜的多个字段和多个玩家标识;
8.获取各玩家标识在各字段下的字段排名;
9.将同一玩家标识的所有所述字段排名进行拼接,得到对应的拼接分数;
10.根据所有所述拼接分数,生成对应的多字段redis排行榜。
11.可选地,将同一玩家标识的所有所述字段排名进行拼接,得到对应的拼接分数,具体包括:
12.获取各字段对应的第一字段数值上限和所述拼接分数的第二字段数值上限;
13.根据所述第二字段数值上限和所述第一字段数值上限,确定拼接时的拼接组合;
14.根据所述拼接组合,对同一玩家标识的所有所述字段排名进行拼接,得到对应的拼接分数。
15.可选地,根据所述第二字段数值上限和所述第一字段数值上限,确定拼接时的拼接组合,具体包括:
16.根据所述第二字段数值上限和所述第一字段数值上限,按照所述多个字段的排列顺序,确定拼接时的拼接组合。
17.可选地,当所述拼接组合的数量为至少两个时,根据所述拼接组合,对同一玩家标识的所有所述字段排名进行拼接,得到对应的拼接分数,具体包括:
18.按照所述多个字段的排列顺序,对同一玩家标识的第一部分字段排名进行拼接,
得到第一拼接组合分数;
19.根据各玩家标识对应的所述第一拼接组合分数,对所述玩家标识进行排名,得到第一拼接排名;
20.按照所述多个字段的排列顺序,对所述第一拼接排名和第二部分字段排名进行拼接,得到第二拼接组合分数,其中,所述第二部分字段为所有所述字段排名中除所述第一部分字段排名以外的部分或全部;
21.判断当前的已拼接组合数目和所述拼接组合的数量是否相同,若是,则将所述第二拼接组合分数作为所述拼接分数,若否,则根据所述第二拼接组合分数对玩家标识进行排名后,重新确定第二部分字段和第二拼接组合分数,直至当前的已拼接组合数和所述拼接组合的数量相同。
22.可选地,当所述拼接组合的数量为一个时,根据所述拼接组合,对同一玩家标识的所有所述字段排名进行拼接,得到对应的拼接分数,具体包括:
23.按照所述多个字段的排列顺序,对同一玩家标识的所有字段排名进行拼接,得到第三拼接组合分数,并将所述第三拼接组合分数作为所述拼接分数。
24.可选地,根据所有所述拼接分数,生成对应的多字段redis排行榜,具体包括:
25.根据所有所述拼接分数,对所述玩家标识进行排名,以生成对应的多字段redis排行榜。
26.本申请第二方面提供了一种多字段redis排行榜的生成装置,包括:
27.第一获取单元,用于获取用于生成排行榜的多个字段和多个玩家标识;
28.第二获取单元,用于获取各玩家标识在各字段下的字段排名;
29.拼接单元,用于将同一玩家标识的所有所述字段排名进行拼接,得到对应的拼接分数;
30.生成单元,用于根据所有所述拼接分数,生成对应的多字段redis排行榜。
31.可选地,所述拼接单元具体包括:
32.获取子单元,用于获取各字段对应的第一字段数值上限和所述拼接分数的第二字段数值上限;
33.确定子单元,用于根据所述第二字段数值上限和所述第一字段数值上限,确定拼接时的拼接组合;
34.拼接子单元,用于根据所述拼接组合,对同一玩家标识的所有所述字段排名进行拼接,得到对应的拼接分数。
35.本申请第三方面提供了一种多字段redis排行榜的生成设备,所述设备包括处理器以及存储器;
36.所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;
37.所述处理器用于根据所述程序代码中的指令执行上述任一种第一方面所述的多字段redis排行榜的生成方法。
38.本申请第四方面提供了一种存储介质,所述存储介质用于存储程序代码,所述程序代码用于执行上述任一种第一方面所述的多字段redis排行榜的生成方法。
39.从以上技术方法可以看出,本申请具有以下优点:
40.申请人在研究现有技术后发现,现有技术中的多字段redis排行榜准确率较低,是
因为redis的有序集合中存储的分数上限为二进制的64位(对应十进制的17位),超过此上限的分数存入redis后会溢出,而多字段的分数往往会超过上述限制,而由于数据的溢出导致分数错误,进而导致无法对排行榜正确排序。
41.基于此,本申请中的多字段redis排行榜的生成方法,首先获取用于生成排行榜的多个字段和多个玩家标识,接着获取各玩家标识在各字段下的字段排名,然后将同一玩家标识的所有字段排名进行拼接,得到对应的拼接分数,最后根据所有拼接分数,生成对应的多字段redis排行榜。本申请中在获取到各玩家标识在各字段下的字段排名后,针对同一玩家对字段排名进行拼接,相当于对对原始的分数进行了压缩,缩减了分数所占位数,避免了分数溢出,从而解决了现有技术中由于分数溢出,导致通过redis数据库生成排行榜时,单一字段的排行榜准确率较高,但是对多字段的排行榜,准确率较低的技术问题。
附图说明
42.为了更清楚地说明本申请实施例中的技术方法,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。
43.图1为本申请实施例中一种多字段redis排行榜的生成方法的实施例一的流程示意图;
44.图2为本申请实施例中一种多字段redis排行榜的生成方法的实施例二的流程示意图;
45.图3为本申请实施例中一种多字段redis排行榜的生成装置的实施例的结构示意图。
具体实施方式
46.本申请实施例提供了一种多字段redis排行榜的生成方法、装置、设备和存储介质,解决了现有通过redis数据库生成排行榜时,单一字段的排行榜准确率较高,但是对多字段的排行榜,准确率较低的技术问题。
47.为了使本技术领域的人员更好地理解本申请方法,下面将结合本申请实施例中的附图,对本申请实施例中的技术方法进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
48.以便于理解,请参阅图1,图1为本申请实施例中一种多字段redis排行榜的生成方法的实施例一的流程示意图。
49.本实施例中的一种多字段redis排行榜的生成方法,包括:
50.步骤101、获取用于生成排行榜的多个字段和多个玩家标识。
51.本实施例中的多字段包括但不限于可以是经验、等级、荣誉值、金钱等,具体本领域技术人员可以根据需要进行限定,在此不做赘述和限定。
52.玩家标识可以是玩家昵称,也可以是玩家id等,只要是能够将玩家区分开即可,在此不做具体限定。
53.对应的上述用于生成排行榜的多个字段和多个玩家标识,可以是在获取到排行榜的生成请求后,该生成请求中携带的。
54.步骤102、获取各玩家标识在各字段下的字段排名。
55.获取到玩家标识和多个字段后,可以获取各玩家标识在各字段下的字段排名。例如,玩家标识有01、02、03、04,对应的多个字段为经验、等级、荣誉值、金钱,获取到的各玩家在各字段下的字段排名如下表1所示。
56.表1
57.项目经验等级荣誉值金钱012241023433031314044122
58.步骤103、将同一玩家标识的所有字段排名进行拼接,得到对应的拼接分数。
59.在得到各玩家标识在不同字段下的字段排名后,针对同一玩家可以将这些字段排名进行拼接,此时便可以得到对应的拼接分数。通过对分数进行拼接减小了最终排名中用于排名时的分数位数,避免了分数的溢出。
60.步骤104、根据所有拼接分数,生成对应的多字段redis排行榜。
61.针对各玩家标识进行步骤103的处理后,便可以得到该多个玩家标识对应的多个拼接分数,此时可以直接根据所有拼接分数,生成对应的多字段redis排行榜。
62.本实施例中的多字段redis排行榜的生成方法,首先获取用于生成排行榜的多个字段和多个玩家标识,接着获取各玩家标识在各字段下的字段排名,然后将同一玩家标识的所有字段排名进行拼接,得到对应的拼接分数,最后根据所有拼接分数,生成对应的多字段redis排行榜。本申请中在获取到各玩家标识在各字段下的字段排名后,针对同一玩家对字段排名进行拼接,相当于对对原始的分数进行了压缩,缩减了分数所占位数,避免了分数溢出,从而解决了现有技术中由于分数溢出,导致通过redis数据库生成排行榜时,单一字段的排行榜准确率较高,但是对多字段的排行榜,准确率较低的技术问题。
63.以上为本申请实施例提供的一种多字段redis排行榜的生成方法的实施例一,以下为本申请实施例提供的一种多字段redis排行榜的生成方法的实施例二。
64.请参阅图2,图2为本申请实施例中一种多字段redis排行榜的生成方法的实施例一的流程示意图。
65.本实施例中的一种多字段redis排行榜的生成方法,包括:
66.步骤201、获取用于生成排行榜的多个字段和多个玩家标识。
67.需要说明的是,步骤201和步骤101的描述相同,具体可以参见上述步骤101的描述,在此不再赘述。
68.步骤202、获取各玩家标识在各字段下的字段排名。
69.需要说明的是,步骤202的描述与实施例一中步骤102的描述相似,具体可以参见上述步骤102的描述,在此不再赘述。
70.步骤203、获取各字段对应的第一字段数值上限和拼接分数的第二字段数值上限。
71.生成最终排行榜时分数溢出,是因为在最终生成排行榜时,用于排名的分数的字
段值超出了排行榜的分数的字段上限。故本实施例中根据最终生成排行榜时的分数的字段上限和各字段对应的字段上限确定拼接组合。
72.本实施例中最终生成排行榜时的数据为拼接分数,确定拼接分数的上限也即确定了排行榜中的分数上限,也即拼接分数对应的第二字段上限为多字段redis排行榜中分数的字段上限。
73.步骤204、根据第二字段数值上限和第一字段数值上限,确定拼接时的拼接组合。
74.在根据第二字段上限和第一字段数值上限确定拼接组合时,需注意每个拼接组合对字段排名进行拼接后得到的拼接分数的字段上限不能大于第一字段数值上限。
75.具体地,根据第二字段数值上限和第一字段数值上限,确定拼接时的拼接组合,具体包括:根据第二字段数值上限和第一字段数值上限,按照多个字段的排列顺序,确定拼接时的拼接组合。即在确定拼接组合时,按照多个字段的排列顺序采用了按照顺序尽可能拼接的方式。
76.步骤205、根据拼接组合,对同一玩家标识的所有字段排名进行拼接,得到对应的拼接分数。
77.其中,当拼接组合的数量为至少两个时,根据拼接组合,对同一玩家标识的所有字段排名进行拼接,得到对应的拼接分数,具体包括:
78.按照多个字段的排列顺序,对同一玩家标识的第一部分字段排名进行拼接,得到第一拼接组合分数;
79.根据各玩家标识对应的第一拼接组合分数,对玩家标识进行排名,得到第一拼接排名;
80.按照多个字段的排列顺序,对第一拼接排名和第二部分字段排名进行拼接,得到第二拼接组合分数,其中,第二部分字段为所有字段排名中除第一部分字段排名以外的部分或全部;
81.判断当前的已拼接组合数目和拼接组合的数量是否相同,若是,则将第二拼接组合分数作为拼接分数,若否,则根据第二拼接组合分数对玩家标识进行排名后,重新确定第二部分字段和第二拼接组合分数,直至当前的已拼接组合数和拼接组合的数量相同。
82.其中,当拼接组合的数量为一个时,根据拼接组合,对同一玩家标识的所有字段排名进行拼接,得到对应的拼接分数,具体包括:
83.按照多个字段的排列顺序,对同一玩家标识的所有字段排名进行拼接,得到第三拼接组合分数,并将第三拼接组合分数作为拼接分数。
84.需要说明的是,拼接过程中的拼接组合分数和拼接排名也是存储在redis的有序集合的。
85.可以理解的是,在拼接的过程中,会对过程中的拼接组合分数进行排名,为了准确排序在,在得到拼接排名后,还对拼接排名进行修正。例如玩家标识为0001、0003、0004,他们的第一拼接组合分数分别为1000、2000、2000。redis的有序集合会将相同分数的赋予不同的排名,按照分数升序排序的话,玩家0001、0003、0004的排名分别为1、2、3,将相同分数修正为相同排名,则为1、2、2。
86.步骤206、根据所有拼接分数,对玩家标识进行排名,以生成对应的多字段redis排行榜。
87.本实施例中的多字段redis排行榜的生成方法,首先获取用于生成排行榜的多个字段和多个玩家标识,接着获取各玩家标识在各字段下的字段排名,然后将同一玩家标识的所有字段排名进行拼接,得到对应的拼接分数,最后根据所有拼接分数,生成对应的多字段redis排行榜。本申请中在获取到各玩家标识在各字段下的字段排名后,针对同一玩家对字段排名进行拼接,相当于对对原始的分数进行了压缩,缩减了分数所占位数,避免了分数溢出,从而解决了现有技术中由于分数溢出,导致通过redis数据库生成排行榜时,单一字段的排行榜准确率较高,但是对多字段的排行榜,准确率较低的技术问题。
88.以上为本申请实施例提供的一种多字段redis排行榜的生成方法的实施例二,以下为本申请实施例提供的一种多字段redis排行榜的生成方法的应用例。
89.本应用例中,采用十进制进行字段上限的说明,多字段redis排行榜的分数字段上限为17位,多个字段为经验、等级、荣誉值、金钱,各字段对应的第一字段数值上限依次为:10位、3位、2位、15位。玩家标识为01、02、03、04,此时得到的玩家标识各字段下的字段排名如上表1所示。
90.对字段排名进行拼接时,经验、等级、荣誉值拼接起来是15位未超过17位,则可以拼接在一起,如果再拼接金钱则变为28位超过上限,所以金钱单独作为一个分数,即此时确定了两个拼接组合。首先进行经验、等级、荣誉值的拼接,得到一个拼接组合e,对e进行排名后,接着将金钱和e再进行一次拼接便可得到第二个拼接组合,此时第二个拼接组合拼接后得到的分数即为用于生成多字段redis排行榜的拼接分数。(可以理解的是,上述的拼接也可以是经验 等级进行拼接,荣誉值 金钱进行拼接,然后将各自拼接后的拼接组合再进行一次拼接)
91.具体拼接时采用字段排名的方式拼接,对表1中的数据进行上述拼接,首先进行第一次拼接,拼接后的数据如下表2所示:
92.表2
93.项目经验 等级 荣誉值排名012242023433031311044124
94.接着将排名后的e和d按照字段排名后,即可得到拼接分数,具体如下
95.表3所示:
96.项目经验 等级 荣誉值 金钱0121023303140442
97.对表3中的拼接分数进行排名后,即可得到多字段redis排行榜,具体如下表4所示:
[0098][0099]
本应用例中,将多个字段划分为多个分数,每个分数是由一定数量的字段拼接而成且不溢出的,用多个redis有序集合分别存储这些分数,再将这些分数排序后的名次拼接成最终分数存储到一个最终的redis有序集合中,这个最终的有序集合即为排行结果。
[0100]
以上为本申请实施例提供的一种多字段redis排行榜的生成方法的应用例,以下为本申请实施例提供的一种多字段redis排行榜的生成装置的实施例。
[0101]
请参阅图3,本实施例中的多字段redis排行榜的生成装置,具体包括:
[0102]
第一获取单元301,用于获取用于生成排行榜的多个字段和多个玩家标识;
[0103]
第二获取单元302,用于获取各玩家标识在各字段下的字段排名;
[0104]
拼接单元303,用于将同一玩家标识的所有字段排名进行拼接,得到对应的拼接分数;
[0105]
生成单元304,用于根据所有拼接分数,生成对应的多字段redis排行榜。
[0106]
进一步地,拼接单元具体包括:
[0107]
获取子单元,用于获取各字段对应的第一字段数值上限和拼接分数的第二字段数值上限;
[0108]
确定子单元,用于根据第二字段数值上限和第一字段数值上限,确定拼接时的拼接组合;
[0109]
拼接子单元,用于根据拼接组合,对同一玩家标识的所有字段排名进行拼接,得到对应的拼接分数。
[0110]
进一步地,确定子单元,具体用于根据第二字段数值上限和第一字段数值上限,按照多个字段的排列顺序,确定拼接时的拼接组合。
[0111]
进一步地,当拼接组合的数量为至少两个时,拼接子单元具体包括:
[0112]
第一拼接子子单元,用于按照多个字段的排列顺序,对同一玩家标识的第一部分字段排名进行拼接,得到第一拼接组合分数;
[0113]
排名子子单元,用于根据各玩家标识对应的第一拼接组合分数,对家标识进行排名,得到第一拼接排名;
[0114]
第二拼接子子单元,用于按照多个字段的排列顺序,对第一拼接排名和第二部分字段排名进行拼接,得到第二拼接组合分数,其中,第二部分字段为所有字段排名中除第一部分字段排名以外的部分或全部;
[0115]
判断子子单元,用于判断当前的已拼接组合数目和拼接组合的数量是否相同,若是,则将第二拼接组合分数作为拼接分数,若否,则根据第二拼接组合分数对玩家标识进行排名后,重新确定第二部分字段和第二拼接组合分数,直至当前的已拼接组合数和拼接组
合的数量相同。
[0116]
进一步地,当拼接组合的数量为一个时,拼接子单元具体包括:
[0117]
第三拼接子子单元,用于按照多个字段的排列顺序,对同一玩家标识的所有字段排名进行拼接,得到第三拼接组合分数,并将第三拼接组合分数作为拼接分数。
[0118]
进一步地,生成单元304,具体用于根据所有拼接分数,对玩家标识进行排名,以生成对应的多字段redis排行榜。
[0119]
本实施例中的多字段redis排行榜的生成装置,首先获取用于生成排行榜的多个字段和多个玩家标识,接着获取各玩家标识在各字段下的字段排名,然后将同一玩家标识的所有字段排名进行拼接,得到对应的拼接分数,最后根据所有拼接分数,生成对应的多字段redis排行榜。本申请中在获取到各玩家标识在各字段下的字段排名后,针对同一玩家对字段排名进行拼接,相当于对对原始的分数进行了压缩,缩减了分数所占位数,避免了分数溢出,从而解决了现有技术中由于分数溢出,导致通过redis数据库生成排行榜时,单一字段的排行榜准确率较高,但是对多字段的排行榜,准确率较低的技术问题。
[0120]
本申请实施例还提供了一种多字段redis排行榜的生成设备的实施例,本实施例中的检测设备包括处理器以及存储器;存储器用于存储程序代码,并将程序代码传输给处理器;处理器用于根据程序代码中的指令执行前述实施例中的多字段redis排行榜的生成方法。
[0121]
本申请实施例还提供了一种存储介质的实施例,本实施例中的存储介质用于存储程序代码,程序代码用于执行前述实施例中的多字段redis排行榜的生成方法。
[0122]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0123]
本申请的说明书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0124]
应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“a和/或b”可以表示:只存在a,只存在b以及同时存在a和b三种情况,其中a,b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
[0125]
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论
的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0126]
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0127]
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0128]
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(英文全称:read

only memory,英文缩写:rom)、随机存取存储器(英文全称:random access memory,英文缩写:ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0129]
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜