掌桥专利:专业的专利平台
掌桥专利
首页

信息处理方法、系统、计算机设备及计算机可读存储介质

文献发布时间:2023-06-19 09:43:16


信息处理方法、系统、计算机设备及计算机可读存储介质

技术领域

本发明涉及计算机技术领域,具体涉及一种信息处理方法、系统、计算机设备及计算机可读存储介质。

背景技术

现有的知识竞赛系统中,当用户在答题过程中,答题状态发生变化时,知识竞赛系统需要实时地对用户成绩以及竞赛榜单中的用户信息进行更新并保存。所述用户信息包括用户成绩以及用户在竞赛过程中的答题信息。在保存用户成绩以及用户信息时,用户成绩与用户信息分别存储。其中,以用户身份标识符(Identity,ID)为键(key),用户成绩为分值(SCORE),将用户成绩保存在redis的有序集(sorted set,ZSET)中。当用户进行用户信息的查询时,需要先在ZSET中根据成绩排名查出用户ID,然后根据用户ID查出具体的用户信息。

然而,当竞赛参与用户数量庞大,且用户信息和用户参与竞赛过程相关时,这种用户成绩和用户信息分开存储的方式导致在进行用户信息查询时,会出现用户成绩与用户信息不一致的情况。例如:用户在根据用户成绩1查询出用户ID的同时,用户的成绩发生了变化,并更新所述用户成绩1为用户成绩2,并更新了竞赛榜单中的用户信息,此时根据查询出的用户ID进行用户信息的查询,查询出的用户信息中的用户成绩为用户成绩2,很明显用户成绩2与先前的用户成1不一致。

如果要保证用户信息和用户成绩的一致性,只能通过redis的EVAL命令,以脚本形式同时更新ZSET中的score和用户信息。但是,redis在执行EVAL命令时,会阻塞其他请求,导致redis性能严重下降,尤其在用户具体数据量庞大的情况下,redis性能下降极为严重。

故,本案旨在解决在高并发场景下,当用户信息与用户参与竞赛过程相关时,如何在不使用EVAL命令的情况下,保证用户成绩和用户信息一致的问题。

发明内容

本发明的目的在于提供一种数据处理方法、系统、计算机设备及可读存储介质,用于解决现有技术中高并发场景下,当用户信息与用户参与竞赛过程相关时,在不使用EVAL命令的情况下时,用户成绩和用户信息不一致的缺陷。

根据本发明的一个方面,提供了一种信息处理方法,该方法包括如下步骤:

在竞赛过程中,当检测到第一用户信息发生变化后,从redis有序集中获取第一用户信息版本以及目标用户信息,所述目标用户信息包括用户答题情况、用户ID以及用户成绩;

根据所述目标用户信息、预设的SCORE计算公式以及所述用户信息版本计算所述用户的第一SCORE;

以所述用户ID和所述第一SCORE为redis键,将所述目标用户信息保存于所述有序集中;及

当接收到根据所述用户ID和所述第一SCORE进行所述目标用户信息的查询指令时,响应所述查询指令,并将查询到的所述目标用户信息发送至用户终端。

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

根据所述目标用户信息,对所述竞赛榜单的所述用户排名进行更新。

可选地,所述SCORE计算公式为:

SCORE=用户成绩*M+N;

其中,所述SCORE表示带有用户信息版本的分值;所述M为常量;所述N为整数,表示所述第一用户信息版本;所述“+”表示字符串的连接。

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

根据接收到的第一预设命令对所述竞赛榜单进行榜单页面查询,得到对应榜单页面的用户榜单排名和所述对应榜单页面中对应用户的第二SCORE;

根据所述第二SCORE获取所述对应用户的第二用户信息版本,并判断与所述第二用户信息版本对应的第二用户信息是否保存在内存缓存中;

当所述第二用户信息未保存在所述内存缓存中时,通过第二预设命令到所述有序集中查询出所述第二用户信息;

将所述第二用户信息写入至所述内存缓存中。

可选地,所述根据所述第二SCORE获取所述对应用户的第二用户信息版本,包括:

将所述第二SCORE按照所述SCORE计算公式进行反向计算,得到所述第二用户信息版本。

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

将所述第一用户信息版本和与所述第一用户信息版本对应的目标用户信息保存于内存缓存中。

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

以所述用户ID为redis键保存所述第一SCORE,以根据所述第一SCORE到所述有续集中查询出所述用户的排名。

为了实现上述目的,本发明还提供一种信息处理系统,该系统具体包括以下组成部分:

获取模块,用于在竞赛过程中,当检测到第一用户信息发生变化后,从redis有序集中获取第一用户信息版本以及目标用户信息,所述目标用户信息包括用户答题情况、用户ID以及用户成绩;

计算模块,用于根据所述目标用户信息、预设的SCORE计算公式以及所述第一用户信息版本计算所述用户的第一SCORE;

保存模块,用于以所述用户ID和所述第一SCORE为redis键,将所述目标用户信息保存于所述有序集中;及

查询模块,用于当接收到根据所述用户ID和所述第一SCORE进行所述目标用户信息的查询指令时,响应所述查询指令,并将查询到的所述目标用户信息发送至用户终端。

为了实现上述目的,本发明还提供一种计算机设备,该计算机设备具体包括:存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述介绍的信息处理方法的步骤。

为了实现上述目的,本发明还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述介绍的信息处理方法的步骤。

本发明实施例提供的信息处理方法、系统、计算机设备及可读存储介质,通过将用户成绩以及用户信息版本按照预设的SCORE计算公式进行计算,得到具有用户信息版本信息的第一SCORE,以用户ID和所述第一SCORE为key,将用户信息保存于ZSET中,使得在高并发场景下,在不使用EVAL命令的情况下,保证了查询出的用户信息和所述用户成绩一致,同时极大地降低了redis的运行压力,加快了redis的运行速度及提高了redis性能,即使在用户数据量庞大的情况下,也不影响reids性能。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1为本公开实施例提供的信息处理方法的一种可选的应用环境图;

图2为本公开实施例提供的信息处理方法的一种可选的流程示意图;

图3为本公开实施例提供的信息处理方法的另一种可选的流程示意图;

图4为本公开实施例提供的信息处理方法的另一种可选的流程示意图;

图5为本公开实施例提供的信息处理方法的另一种可选的流程示意图;

图6为本公开实施例提供的信息处理系统的一种可选的程序模块示意图;

图7为本公开实施例提供的计算机设备的一种可选的硬件架构示意图。

具体实施方式

以下结合附图与具体实施例进一步阐述本发明的优点。

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。

在本公开使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本公开。在本公开和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本公开可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

在本发明的描述中,需要理解的是,步骤前的数字标号并不标识执行步骤的前后顺序,仅用于方便描述本发明及区别每一步骤,因此不能理解为对本发明的限制。

名词解释:

用户:参与榜单排名的参与者,可以为个人或者组织。

用户ID:用户的唯一标识。

竞赛:榜单的产生方式,即用户通过竞赛产生榜单排名。

用户成绩:用户参与竞赛的得分,也是榜单排名的依据。

用户信息:用户在榜单上所展示的内容,所述内容与所述用户成绩或参与排名过程相关,包括:用户名称以及各个竞赛题目的答题情况,所述答题情况可以包括答题时长以及答题的正确性。

SCORE:redis ZSET排序的依据。

用户信息版本:用户成绩每次发生变化时,都会产生一个用户信息版本。

Redis:全称为Remote Dictionary Server,中文为远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的应用程序接口(Application Programming Interface,API)。

下面结合附图对本发明实施例进行说明。

图1为本发明实施例的信息处理方法的一种可选的应用环境图。在示例性的实施例中,移动终端2可以通过网络6从服务器4获取数据。所述移动终端2可以是移动电话、平板个人计算机(tablet personal computer)、膝上型计算机(laptop computer)、笔记本电脑,台式电脑等具有数据发送功能的电子设备。所述网络6可以是因特网。

实施例一

图2示意性示出了根据本发明实施例一的信息处理方法的一种可选的流程示意图。该方法应用于移动终端2中,可以理解,本方法实施例中的流程图不用于对执行步骤的顺序进行限定。下面以移动终端2为执行主体进行示例性描述。

如图2所示,该方法具体包括以下步骤:

步骤S100:在竞赛过程中,当检测到第一用户信息发生变化后,从redis有序集中获取第一用户信息版本以及目标用户信息,所述目标用户信息包括用户答题情况、用户ID以及用户成绩。

具体地,当检测到用户的用户信息发生变化后,根据接收到的redis INCR命令从redis ZSET中获取变化后的用户信息版本以及目标用户信息。所述目标用户信息为变化后的用户信息。例如:当检测到用户A完成第四道题目时,根据接收到的redis INCR命令从所述redis ZSET中获取所述用户A完成第四道题目后的用户信息版本以及变化后的目标用户信息。

在实际应用中,例如,知识竞赛场景中,参与竞赛的用户人数有上百万人,题目量为50道。在用户答题的过程中,随着用户答题数量的不断推进,竞赛榜单处于不断更新的状态中。所述竞赛榜单记录了每个用户的答题情况以及用户成绩排名。

在一示例性的实施例中,竞赛榜单示意表如下:

如上表,排名第一用户的用户ID为001,成绩为90,其中,答题情况为:题1答题正确,答题耗时为300s;题2答题正确,答题耗时为250s;题3答题错误,答题耗时为300s…排名第二用户的用户ID为020,成绩为88,其中,答题情况为:题1答题正确,答题耗时为290s;题2答题错误,答题耗时270s;题3答题错误,答题耗时200s…排名第三用户的用户ID为015,成绩为85,其中,答题情况为:题1答题正确,答题耗时为280s;题2答题正确,答题耗时为300s;题3答题错误,答题耗时为150s…上述用户ID、成绩和答题情况统称为用户信息。

需要说明的是,用户每完成一个题目的答题或者修改一个答案,对应用户的用户信息版本加1。例如,当用户完成第一道题目时,该用户的用户信息版本为1;当用户完成第二道题目时,该用户的用户信息版本为2;若该用户返回去修改第一道题目的答案,则该用户的用户信息版本为3;该用户继续第三道题的答题,当该用户完成第三道题目时,该用户的用户信息版本为4…依此,该用户的用户信息版本依次更新。

在实际应用中,由于用户的答题或者修改答案的过程中,可能由于答题错误或者修改答案前后均不影响用户成绩,故,在其他实施例中,也可以根据用户的成绩的变化情况进行用户信息版本的更新。例如:用户成绩第一次更新时的用户信息版本为1,第二次更新时的用户信息版本为2…依此进行用户信息版本的更新,并将所述用户信息版本和与所述用户信息版本对应的用户信息进行映射并保存于内存缓存中,实现所述竞赛榜单中的每一行信息进行内存缓存,以加速所述用户信息的查询。

步骤S102:根据所述目标用户信息、预设的SCORE计算公式以及所述第一用户信息版本计算所述用户的第一SCORE。

在一示例性的实施例中,所述SCORE计算公式为:

SCORE=用户成绩*M+N;

其中,所述SCORE表示带有用户信息版本的分值;所述M为常量;所述N为整数,表示所述用户信息版本;所述“+”表示字符串的连接。示例性地,所述第一SCORE为一个64位的整型,高10位用于记录用户成绩,低54位用于记录用户信息对应的版本信息。在一示例性的实施例中,所述M可以表示单个用户产生的版本信息的最大值,也即单个用户最多产生多少个用户信息版本。例如:根据答题情况的各种排列组合,得到每个用户最多产生50种用户版本信息,故,所述M的取值为50。具体地,通过M的设置,将用户成绩与M进行相乘,可以避免用户成绩与用户信息版本之间相互产生干扰。

在示例性的实施例中,通过将所述用户成绩根据所述SCORE计算公式进行计算后,由于每个用户的SCORE计算规则相同,故,经过计算后的SCORE并不会影响用户的排名。通过将SCORE进行变换,使得SCORE具有用户信息版本的信息,当得到所述SCORE时,根据所述SCORE可以获取所述用户信息版本。

步骤S104:以所述用户ID和所述第一SCORE为redis键,将所述目标用户信息保存于所述有序集中。

具体地,通过以所述用户ID和所述第一SCORE为redis key,将所述目标用户信息保存于所述ZSET中,以使只有在同时接收到用户输入的用户ID和第一SCORE时,才将查询出的目标用户信息反馈给用户,从而完成用户信息的版本化。

步骤S106:当接收到根据所述用户ID和所述第一SCORE进行所述目标用户信息的查询指令时,响应所述查询指令,并将查询到的所述目标用户信息发送至用户终端。

本发明实施例通过以用户ID和计算出的第一SCORE为redis key,将目标用户信息进行保存,无需使用EVAL命令执行复杂的脚本,就能够通过用户ID和SCORE查询出对应的用户信息,保证用户成绩和用户信息的一致性,同时极大地降低了redis的运行压力,加快了redis的运行速度及提高了redis性能,即使在用户数据量庞大的情况下,也不影响redis性能。

在示例性的实施例中,如图3所示,所述方法还可以包括步骤S200。

步骤S200:根据所述目标用户信息,对所述竞赛榜单的所述用户排名进行更新。

具体地,由于所述竞赛榜单包括所述用户排名和所述用户信息,当对所述竞赛榜单进行更新时,所述竞赛榜单中的用户排名和所述用户信息均进行更新。在示例性的实施例中,可以通过使用ZADD命令进行所述竞赛榜单的更新。

在示例性的实施例中,如图4所示,所述方法还可以包括步骤S300~S306。

步骤S300:根据接收到的第一预设命令对所述竞赛榜单进行榜单页面查询,得到对应榜单页面的用户榜单排名和所述对应榜单页面中对应用户的第二SCORE。

具体地,当需要对所述竞赛榜单进行榜单页面查询时,通过接收到的ZRANGEWITHSCORES命令进行榜单页面的查询,以查询出所述榜单页面的用户榜单排名和所述榜单页面中所有用户对应的第二SCORE。

步骤S302:根据所述第二SCORE获取所述对应用户的第二用户信息版本,并判断与所述第二用户信息版本对应的第二用户信息是否保存在内存缓存中。

由于所述第二SCORE均是根据SCORE的计算公式计算出来的,且所述用户信息版本按照预设的格式保存于所述第二SCORE中,故,在获取到所述第二SCORE后,将所述第二SCORE按照所述SCORE计算公式进行反向计算,得到所述对应用户的第二用户信息版本。例如:所述SCORE计算公式中,所述用户信息版本保存在SCORE的低54位,则所述第二SCORE的低54位为所述用户信息版本。由于所述用户信息版本和对应用户的用户信息单独进行缓存,当获取到所述用户的用户信息版本后,需要判断与所述用户信息版本对应的用户信息是否保存在所述内存缓存中。

步骤S304:当所述第二用户信息未保存在所述内存缓存中时,通过第二预设命令到所述有序集中查询出所述第二用户信息。

具体地,可以通过使用MGET命令查询出未保存在所述内存缓存中(也即缺失)的第二用户信息。

步骤S306:将所述第二用户信息写入至所述内存缓存中。

当所述第二用户信息保存在所述内存缓存中时,直接从所述内存缓存中获取所述第二用户信息。通过将所述用户信息进行缓存,能够进一步加速用户信息的查询。

在示例性的实施例中,如图5所示,所述方法还可以包括步骤S400。

步骤S400:以所述用户ID为redis键保存所述第一SCORE,以根据所述第一SCORE到所述有续集中查询出所述用户的排名。

具体地,通过对所述第一SCORE进行反向存储,以获取所述用户当前的第一SCORE。然后,根据获取到的所述第一SCORE,从所述有续集(ZSET)中查询出所述用户的排名。需要说明的是,由于所述redis只能通过用户ID查询出所述用户的排名,而查询不出所述用户具体的SCORE,通过以所述用户ID为redis键保存所述第一SCORE,能够实现通过所述用户ID快速查询出所述用户的第一SCORE,以便后续根据所述用户ID和所述第一SCORE查询出所述目标用户信息。

在示例性的实施例中,所述方法还可以包括:

当接收到查询所述用户信息版本的第一查询指令时,则根据所述用户ID查询出所述第一SCORE;

将所述第一SCORE按照所述SCORE计算公式进行反向计算,得到所述用户信息版本。

具体地,由于所述第一SCORE是根据所述SCORE计算公式计算出来的,且所述用户信息版本按照预设的格式保存于所述第一SCORE中,故,在查询出所述第一SCORE后,可根据所述第一SCORE获取对应用户的用户信息版本。例如:所述第一SCORE的低54位为所述用户信息版本。

在示例性的实施例中,所述方法还可以包括:当接收到查询所述用户排名的第二查询指令时,根据预设查询命令查询所述有序集,得到所述用户排名。

在一具体实施例中,所述用户排名可以通过ZREMRANK命令直接查询出所述用户排名。在其他实施例中,所述用户排名也可以通过ZCOUNT命令计算出。

本发明实施例提供的信息处理方法,通过将用户成绩以及用户信息版本按照预设的SCORE计算公式进行计算,得到具有用户信息版本信息的第一SCORE,以用户ID和所述第一SCORE为key,将用户信息保存于ZSET中,使得在高并发场景下,在不使用EVAL命令的情况下,保证了查询出的用户信息和所述用户成绩一致,同时极大地提高了redis性能。

实施例二

基于上述实施例中提供的信息处理方法,本实施例中提供一种信息处理系统,所述信息处理系统可以应用于计算机设备。具体地,图6示出了该信息处理系统的可选的结构框图,该信息处理系统被分割成一个或多个程序模块,一个或者多个程序模块被存储于存储介质中,并由一个或多个处理器所执行,以完成本发明。本发明所称的程序模块是指能够完成特定功能的一系列计算机程序指令段,比程序本身更适合描述信息处理系统在存储介质中的执行过程,以下描述将具体介绍本实施例各程序模块的功能。

如图6所示,信息处理系统具体包括以下组成部分:

获取模块201,用于在竞赛过程中,当检测到第一用户信息发生变化后,从redis有序集中获取第一用户信息版本以及目标用户信息,所述目标用户信息包括用户答题情况、用户ID以及用户成绩。

具体地,当检测到用户的用户信息发生变化后,所述获取模块201根据接收到的redis INCR命令从redis ZSET中获取变化后的用户信息版本以及目标用户信息。所述目标用户信息为变化后的用户信息。例如:当检测到用户A完成第四道题目时,根据接收到的redis INCR命令从所述redis ZSET中获取所述用户A完成第四道题目后的用户信息版本以及变化后的目标用户信息。

在实际应用中,例如,知识竞赛场景中,参与竞赛的用户人数有上百万人,题目量为50道。在用户答题的过程中,随着用户答题数量的不断推进,竞赛榜单处于不断更新的状态中。所述竞赛榜单记录了每个用户的答题情况以及用户成绩排名。

在一示例性的实施例中,竞赛榜单示意表如下:

如上表,排名第一用户的用户ID为001,成绩为90,其中,答题情况为:题1答题正确,答题耗时为300s;题2答题正确,答题耗时为250s;题3答题错误,答题耗时为300s…排名第二用户的用户ID为020,成绩为88,其中,答题情况为:题1答题正确,答题耗时为290s;题2答题错误,答题耗时270s;题3答题错误,答题耗时200s…排名第三用户的用户ID为015,成绩为85,其中,答题情况为:题1答题正确,答题耗时为280s;题2答题正确,答题耗时为300s;题3答题错误,答题耗时为150s…上述用户ID、成绩和答题情况统称为用户信息。

需要说明的是,用户每完成一个题目的答题或者修改一个答案,对应用户的用户信息版本加1。例如,当用户完成第一道题目时,该用户的用户信息版本为1;当用户完成第二道题目时,该用户的用户信息版本为2;若该用户返回去修改第一道题目的答案,则该用户的用户信息版本为3;该用户继续第三道题的答题,当该用户完成第三道题目时,该用户的用户信息版本为4…依此,该用户的用户信息版本依次更新。

在实际应用中,由于用户的答题或者修改答案的过程中,可能由于答题错误或者修改答案前后均不影响用户成绩,故,在其他实施例中,也可以根据用户的成绩的变化情况进行用户信息版本的更新。例如:用户成绩第一次更新时的用户信息版本为1,第二次更新时的用户信息版本为2…依此进行用户信息版本的更新,并将所述用户信息版本和与所述用户信息版本对应的用户信息进行映射并保存于内存缓存中,实现所述竞赛榜单中的每一行信息进行缓存,以加速所述用户信息的查询。

计算模块202,用于根据所述目标用户信息、预设的SCORE计算公式以及所述第一用户信息版本计算所述用户的第一SCORE。

在一示例性的实施例中,所述SCORE计算公式为:

SCORE=用户成绩*M+N;

其中,所述SCORE表示带有用户信息版本的分值;所述M为常量;所述N为整数,表示所述用户信息版本;所述“+”表示字符串的连接。示例性地,所述第一SCORE为一个64位的整型,高10位用于记录用户成绩,低54位用于记录用户信息对应的版本信息。在一示例性的实施例中,所述M可以表示单个用户产生的版本信息的最大值,也即单个用户最多产生多少个用户信息版本。例如:根据答题情况的各种排列组合,得到每个用户最多产生50种用户版本信息,故,所述M的取值为50。具体地,通过M的设置,将用户成绩与M进行相乘,可以避免用户成绩与用户信息版本之间相互产生干扰。

在示例性的实施例中,通过将所述用户成绩根据所述SCORE计算公式进行计算后,由于每个用户的SCORE计算规则相同,故,经过计算后的SCORE并不会影响用户的排名。通过将SCORE进行变换,使得SCORE具有用户信息版本的信息,当得到所述SCORE时,根据所述SCORE可以获取所述用户信息版本。

保存模块203,用于以所述用户ID和所述第一SCORE为redis键,将所述目标用户信息保存于所述有序集中。

具体地,通过以所述用户ID和所述第一SCORE为redis key,将所述目标用户信息保存于所述ZSET中,以使只有在同时接收到用户输入的用户ID和第一SCORE时,才将查询出的目标用户信息反馈给用户,从而完成用户信息的版本化。

查询模块204,用于当接收到根据所述用户ID和所述第一SCORE进行所述目标用户信息的查询指令时,响应所述查询指令,并将查询到的所述目标用户信息发送至用户终端。

本发明实施例通过以用户ID和计算后的第一SCORE为redis key,将目标用户信息进行保存,无需使用EVAL命令执行复杂的脚本,就能够通过用户ID和SCORE查询出对应的用户信息,保证用户成绩和用户信息的一致性,同时极大地降低了redis的运行压力,加快了redis的运行速度及提高了redis性能,即使在用户数据量庞大的情况下,也不影响redis性能。

在示例性的实施例中,所述信息处理系统还可以包括更新模块,用于根据所述目标用户信息,对所述竞赛榜单的所述用户排名进行更新。

具体地,由于所述竞赛榜单包括所述用户排名和所述用户信息,当更新模块对所述竞赛榜单进行更新时,所述竞赛榜单中的用户排名和所述用户信息均进行更新。在示例性的实施例中,可以通过使用ZADD命令进行所述竞赛榜单的更新。

在示例性的实施例中,所述信息处理系统还可以包括第一查询模块、处理模块、第二查询模块以及写入模块。

第一查询模块,用于根据接收到的第一预设命令对所述竞赛榜单进行榜单页面查询,得到对应榜单页面的用户榜单排名和所述对应榜单页面中对应用户的第二SCORE。

具体地,当需要对所述竞赛榜单进行榜单页面查询时,所述第一查询模块通过接收到的ZRANGE WITHSCORES命令进行榜单页面的查询,以查询出所述榜单页面的用户榜单排名和所述榜单页面中所有用户对应的第二SCORE。

处理模块,用于根据所述第二SCORE获取所述对应用户的第二用户信息版本,并判断与所述第二用户信息版本对应的第二用户信息是否保存在内存缓存中。

由于所述第二SCORE均是根据SCORE的计算公式计算出来的,且所述用户信息版本按照预设的格式保存于所述第二SCORE中,故,在获取到所述第二SCORE后,将所述第二SCORE按照所述SCORE计算公式进行反向计算,得到所述对应用户的第二用户信息版本。例如:所述SCORE计算公式中,所述用户信息版本保存在SCORE的低54位,则所述第二SCORE的低54位为所述用户信息版本。由于所述用户信息版本和对应用户的用户信息单独进行缓存,当获取到所述用户的用户信息版本后,需要判断与所述用户信息版本对应的用户信息是否保存在所述内存缓存中。

第二查询模块,用于当所述第二用户信息未保存在所述内存缓存中时,通过第二预设命令到所述有序集中查询出所述第二用户信息。

具体地,可以通过使用MGET命令查询出未保存在所述内存缓存中(也即缺失)的用户信息。

写入模块,用于将所述第二用户信息写入至所述内存缓存中。

当所述第二用户信息保存在所述内存缓存中时,直接从所述内存缓存中获取所述第二用户信息。通过将所述用户信息进行缓存,能够进一步加速用户信息的查询。

在示例性的实施例中,所述信息处理系统还可以包括第三查询模块,用于以所述用户ID为redis键保存所述第一SCORE,以根据所述第一SCORE到所述有续集中查询出所述用户的排名。

具体地,通过对所述第一SCORE进行反向存储,以获取所述用户当前的第一SCORE。然后,根据获取到的所述第一SCORE,从所述有续集(ZSET)中查询出所述用户的排名。需要说明的是,由于所述redis只能通过用户ID查询出所述用户的排名,而查询不出所述用户具体的SCORE,通过以所述用户ID为redis键保存所述第一SCORE,能够实现通过所述用户ID快速查询出所述用户的第一SCORE,以便后续根据所述用户ID和所述第一SCORE查询出所述目标用户信息。

在示例性的实施例中,所述信息处理系统还可以用于:

当接收到查询所述用户信息版本的第一查询指令时,则根据所述用户ID查询出所述第一SCORE;

将所述第一SCORE按照所述SCORE计算公式进行反向计算,得到所述用户信息版本。

具体地,由于所述第一SCORE是根据所述SCORE计算公式计算出来的,且所述用户信息版本按照预设的格式保存于所述第一SCORE中,故,在查询出所述第一SCORE后,可根据所述第一SCORE获取对应用户的用户信息版本。例如:所述第一SCORE的低54位为所述用户信息版本。

在示例性的实施例中,所述信息处理系统还可以用于:当接收到查询所述用户排名的第二查询指令时,根据预设查询命令查询所述有序集,得到所述用户排名。

在一具体实施例中,所述用户排名可以通过ZREMRANK命令直接查询出所述用户排名。在其他实施例中,所述用户排名也可以通过ZCOUNT命令计算出。

本发明实施例提供的信息处理系统,通过将用户成绩以及用户信息版本按照预设的SCORE计算公式进行计算,得到具有用户信息版本信息的第一SCORE,以用户ID和所述第一SCORE为key,将用户信息保存于ZSET中,使得在高并发场景下,在不使用EVAL命令的情况下,保证了查询出的用户信息和所述用户成绩一致,同时极大地提高了redis性能。

实施例三

本实施例还提供一种计算机设备,如可以执行程序的智能手机、平板电脑、笔记本电脑、台式计算机、机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。如图7所示,本实施例的计算机设备30至少包括但不限于:可通过系统总线相互通信连接的存储器301、处理器302。需要指出的是,图7仅示出了具有组件301-302的计算机设备30,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。

本实施例中,存储器301(即可读存储介质)包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器301可以是计算机设备30的内部存储单元,例如该计算机设备30的硬盘或内存。在另一些实施例中,存储器301也可以是计算机设备30的外部存储设备,例如该计算机设备30上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。当然,存储器301还可以既包括计算机设备30的内部存储单元也包括其外部存储设备。在本实施例中,存储器301通常用于存储安装于计算机设备30的操作系统和各类应用软件,例如上述实施例的信息处理系统的程序代码等。此外,存储器301还可以用于暂时地存储已经输出或者将要输出的各类数据。

处理器302在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器302通常用于控制计算机设备30的总体操作。

具体的,在本实施例中,处理器302用于执行处理器302中存储的信息处理方法的程序,所述信息处理方法的程序被执行时实现如下步骤:

在竞赛过程中,当检测到第一用户信息发生变化后,从redis有序集中获取第一用户信息版本以及目标用户信息,所述目标用户信息包括用户答题情况、用户ID以及用户成绩;

根据所述目标用户信息、预设的SCORE计算公式以及所述第一用户信息版本计算所述用户的第一SCORE;

以所述用户ID和所述第一SCORE为redis键,将所述目标用户信息保存于所述有序集中;及

当接收到根据所述用户ID和所述第一SCORE进行所述目标用户信息的查询指令时,响应所述查询指令,并将查询到的所述目标用户信息发送至用户终端。

上述方法步骤的具体实施例过程可参见上述实施例,本实施例在此不再重复赘述。

实施例四

本实施例还提供一种计算机可读存储介质,如闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘、服务器、App应用商城等等,其上存储有计算机程序,所述计算机程序被处理器执行时实现如下方法步骤:

在竞赛过程中,当检测到第一用户信息发生变化后,从redis有序集中获取第一用户信息版本以及目标用户信息,所述目标用户信息包括用户答题情况、用户ID以及用户成绩;

根据所述目标用户信息、预设的SCORE计算公式以及所述第一用户信息版本计算所述用户的第一SCORE;

以所述用户ID和所述第一SCORE为redis键,将所述目标用户信息保存于所述有序集中;及

当接收到根据所述用户ID和所述第一SCORE进行所述目标用户信息的查询指令时,响应所述查询指令,并将查询到的所述目标用户信息发送至用户终端。

上述方法步骤的具体实施例过程可参见上述实施例,本实施例在此不再重复赘述。

本实施例提供的计算机设备及可读存储介质,通过将用户成绩以及用户信息版本按照预设的SCORE计算公式进行计算,得到具有用户信息版本信息的第一SCORE,以用户ID和所述第一SCORE为key,将用户信息保存于ZSET中,使得在高并发场景下,在不使用EVAL命令的情况下,保证了查询出的用户信息和所述用户成绩一致,同时极大地提高了redis性能。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

相关技术
  • 信息处理方法、信息处理装置、用来实现该信息处理方法的计算机程序、及存储该计算机程序的计算机可读存储介质
  • 信息处理方法、系统、计算机设备及计算机可读存储介质
技术分类

06120112277043