CN110675133A - 一种抢红包的方法、装置、电子设备及可读存储介质 - Google Patents

一种抢红包的方法、装置、电子设备及可读存储介质 Download PDF

Info

Publication number
CN110675133A
CN110675133A CN201910943181.4A CN201910943181A CN110675133A CN 110675133 A CN110675133 A CN 110675133A CN 201910943181 A CN201910943181 A CN 201910943181A CN 110675133 A CN110675133 A CN 110675133A
Authority
CN
China
Prior art keywords
server
red
sub
red packet
amount
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201910943181.4A
Other languages
English (en)
Inventor
陈建全
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Lemi Technology Co ltd
Original Assignee
Beijing Kingsoft Internet Security Software Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Kingsoft Internet Security Software Co Ltd filed Critical Beijing Kingsoft Internet Security Software Co Ltd
Priority to CN201910943181.4A priority Critical patent/CN110675133A/zh
Publication of CN110675133A publication Critical patent/CN110675133A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/04Payment circuits
    • G06Q20/06Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
    • G06Q20/065Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/02Marketing; Price estimation or determination; Fundraising
    • G06Q30/0207Discounts or incentives, e.g. coupons or rebates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/51Discovery or management thereof, e.g. service location protocol [SLP] or web services

Abstract

本发明实施例公开一种抢红包的方法、装置、电子设备及可读存储介质,为提高完成抢红包操作的可靠性而发明。抢红包的方法,包括:根据接收到的客户端发送的红包总金额和红包总份数,将红包总金额拆分为第一份数的子金额;将红包总份数及拆分后的所述第一份数的子金额向第二服务端发送;根据接收到的第一抢红包请求,调用第二服务端的减函数进行抢红包操作;接收减函数的返回值;调用第二服务端的索引函数,以使所述索引函数根据所述减函数的返回值及预定查找规则,从所述第二服务端中查找对应的子金额;接收所述第二服务端的索引函数返回的子金额,并将所述子金额向发起所述第一抢红包请求的客户端发送。本发明适用于利用移动终端进行抢红包。

Description

一种抢红包的方法、装置、电子设备及可读存储介质
技术领域
本发明涉及通信技术领域,尤其涉及一种抢红包的方法、装置、电子设备及可读存储介质。
背景技术
随着计算机通信以及互联网技术的发展,越来越多的人拥有可以与互联网连网的电子设备,使得通过电子设备进行红包的发送和领取成为可能。在电子设备上发、抢红包,需要将大红包拆成多个小红包(子红包),不同的用户对小红包进行抢红包操作。既然是多个用户进行抢红包操作,就会出现并发请求,即同一时刻,会有多个用户同时发出请求。
服务端在对用户的抢红包请求进行处理时,在同一时刻只能处理一个抢红包请求。而在面对多个用户同时发出抢红包请求时,现有的抢红包系统采用在服务端加互斥锁的方式,使某一时刻只有一个线程占有锁资源,即某一时刻只处理一个抢红包请求,但是由于在服务端加互斥锁,在抢红包的过程中,就容易出现死锁的情况,导致不能可靠地完成抢红包的操作。
发明内容
有鉴于此,本发明实施例提供一种抢红包的方法、装置、电子设备及可读存储介质,能够提高完成抢红包操作的可靠性。
第一方面,本发明实施例提供一种抢红包的方法,应用于第一服务端,包括:接收客户端发送的红包总金额和红包总份数;根据所述红包总金额和红包总份数,将所述红包总金额拆分为第一份数的子金额;将所述红包总份数及拆分后的所述第一份数的子金额向第二服务端发送,以使所述第二服务端,存储所述红包总份数及所述第一份数的子金额;其中,第二服务端包括redis服务器;接收第一抢红包请求;根据所述第一抢红包请求,调用所述第二服务端的减函数进行抢红包操作;接收所述减函数的返回值,所述返回值表示剩余红包数量;调用所述第二服务端的索引函数,以使所述索引函数根据所述减函数的返回值及预定查找规则,从所述第二服务端中查找对应的子金额;接收所述第二服务端的索引函数返回的子金额,并将所述子金额向发起所述第一抢红包请求的客户端发送。
根据本发明实施例的一种具体实现方式,还包括:监听所述第二服务端服务器中剩余红包数量是否为0;若监听到所述第二服务端中剩余红包数量为0,则向当前发起抢红包请求的客户端返回红包抢完消息,并结束流程。
根据本发明实施例的一种具体实现方式,还包括:获取所述第二服务端中存储的得奖列表,以将所述得奖列表向红包发起者的客户端及发起抢红包请求的客户端发送;所述的得奖列表中有已抢到红包的用户标识信息及抢到的子金额信息。
第二方面,本发明实施例提供一种抢红包的装置,应用于第一服务端,包括:第一接收模块、拆分模块、第一发送模块、第二接收模块、第一调用模块、返回值接收模块、第二调用模块、第三接收模块,其中,第一接收模块,用于接收客户端发送的红包总金额和红包总份数;拆分模块,用于根据所述红包总金额和红包总份数,将所述红包总金额拆分为第一份数的子金额;第一发送模块,用于将所述红包总份数及拆分后的所述第一份数的子金额向第二服务端发送,以使所述第二服务端,存储所述红包总份数及所述第一份数的子金额;其中,第二服务端包括redis服务器;第二接收模块,用于接收第一抢红包请求;第一调用模块,用于根据所述第一抢红包请求,调用所述第二服务端的减函数进行抢红包操作;返回值接收模块,用于接收所述减函数的返回值,所述返回值表示剩余红包数量;第二调用模块,用于调用所述第二服务端的索引函数,以使所述索引函数根据所述减函数的返回值及预定查找规则,从所述第二服务端中查找对应的子金额;第三接收模块,用于接收所述第二服务端的索引函数返回的子金额,并将所述子金额向发起所述第一抢红包请求的客户端发送。
根据本发明实施例的一种具体实现方式,还包括:监听模块,所述监听模块,用于监听所述第二服务端服务器中剩余红包数量是否为0;若监听到所述第二服务端中剩余红包数量为0,则向当前发起抢红包请求的客户端返回红包抢完消息。
根据本发明实施例的一种具体实现方式,还包括:获取模块,用于获取所述第二服务端中存储的得奖列表,以将所述得奖列表向红包发起者的客户端及发起抢红包请求的客户端发送;所述的得奖列表中有已抢到红包的用户标识信息及抢到的子金额信息。
第三方面,本发明实施例提供一种抢红包的方法,应用于第二服务端,第二服务端包括redis服务器,包括:接收并存储第一服务端发送的红包总份数和第一份数的子金额;其中,所述第一份数的子金额按照第一顺序存储在第一列表中;接收第一服务端对减函数的调用,通过所述减函数进行抢红包操作;向所述第一服务端发送返回值,所述返回值表示剩余红包数量;接收第一服务端对索引函数的调用,所述索引函数根据所述返回值及预定查找规则,查找对应的子金额;向所述第一服务端返回查找到的子金额,以使所述第一服务端将所述子金额向发起抢红包请求的客户端发送。
根据本发明实施例的一种具体实现方式,所述接收并存储第一服务端发送的第一份数的子金额,包括:接收第一服务端发送的第一份数的子金额;对所述第一份数的子金额,利用重排列函数将所述子金额重新排列后按照第一顺序存储在第一列表中。
根据本发明实施例的一种具体实现方式,还包括:通过存储函数将已抢到红包的用户标识信息及查找到的子金额信息保存在得奖列表中;向所述第一服务端返回所述得奖列表,以使所述第一服务端将所述得奖列表向红包发起者的客户端及发起抢红包请求的客户端发送。
第四方面,本发明实施例提供一种抢红包的装置,应用于第二服务端,第二服务端包括redis服务器,包括:第四接收模块、第五接收模块、第二发送模块、第六接收模块、子金额返回模块,其中,第四接收模块,用于接收并存储第一服务端发送的红包总份数和第一份数的子金额;其中,所述第一份数的子金额按照第一顺序存储在第一列表中;第五接收模块,用于接收第一服务端对减函数的调用,通过所述减函数进行抢红包操作;第二发送模块,用于向所述第一服务端发送返回值,所述返回值表示剩余红包数量;第六接收模块,用于接收第一服务端对索引函数的调用,所述索引函数根据所返回值及预定查找规则,查找对应的子金额;子金额返回模块,用于向所述第一服务端返回查找到的子金额,以使所述第一服务端将所述子金额向发起抢红包请求的客户端发送。
根据本发明实施例的一种具体实现方式,所述第三接收模块,还包括:接收子模块和存储子模块,其中,接收子模块,用于接收第一服务端发送的第一份数的子金额;存储子模块,对所述第一份数的子金额,利用重排列函数将所述子金额重新排列后按照第一顺序存储在第一列表中。
根据本发明实施例的一种具体实现方式,还包括:保存模块和得奖列表返回模块,其中,保存模块,用于通过存储函数将已抢到红包的用户标识信息及查找到的子金额信息保存在得奖列表中;得奖列表返回模块,用于向所述第一服务端返回所述得奖列表,以使所述第一服务端将所述得奖列表向红包发起者的客户端及发起抢红包请求的客户端发送。
第五方面,本发明实施例提供一种电子设备,所述电子设备包括:壳体、处理器、存储器、电路板和电源电路,其中,电路板安置在壳体围成的空间内部,处理器和存储器设置在电路板上;电源电路,用于为上述电子设备的各个电路或器件供电;存储器用于存储可执行程序代码;处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述任一实现方式所述的方法。
第六方面,本发明的实施例还提供一种可读存储介质,所述可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现本发明任一实施方式所述的方法。
本发明实施例提供的一种抢红包的方法、装置、电子设备及可读存储介质,通过将接收到的所述红包总金额拆分为第一份数的子金额,并将所述红包总份数及拆分后的第一份数的子金额向第二服务端(包括redis服务端)发送,之后,根据接收到的第一抢红包请求,调用所述第二服务端的减函数进行抢红包操作,再调用并接收第二服务端的索引函数返回的子金额,而后,将所述子金额向发起所述第一抢红包请求的客户端发送。由于redis是单线程架构,每个时刻只有一个线程能够对减函数进行调用,通过调用第二服务端(包括有redis服务端)的减函数进行抢红包操作,再调用第二服务端的索引函数,接收索引函数根据减函数的返回值及预定查找规则查找到的子金额,向发起所述第一抢红包请求的客户端发送对应子金额,即某一时刻只处理一个抢红包请求,这样,在确保某一时刻只处理一个抢红包请求的同时,提高了完成抢红包操作的可靠性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本发明提供的一种抢红包的方法的实施例一的流程示意图;
图2为本发明提供的一种抢红包的装置的实施例一的流程示意图;
图3为本发明提供的一种抢红包的方法的实施例二的流程示意图;
图4为本发明提供的一种抢红包的装置的实施例二的流程示意图;
图5为本发明电子设备一个实施例的结构示意图。
具体实施方式
下面结合附图对本发明实施例进行详细描述。
应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
图1为本发明提供的一种抢红包的方法的实施例一的流程示意图,如图1所示,应用于第一服务端,第一服务端可以包括一台或多台服务器。
本实施例的方法可以包括:
步骤101、接收客户端发送的红包总金额和红包总份数。
本实施例中,红包总份数可为两个及两个以上的整数;红包总金额至少为所属币种的最小计量单位的整数倍,且整数倍的数值至少为红包总份数,以使用人民币为例,最小计量单位为分,如客户端发送红包的份数为3份,那么红包的总金额至少为0.03元。
本实施例中,用户发送的红包总金额可为50元,红包总份数可为4份。
步骤102、根据所述红包总金额和红包总份数,将所述红包总金额拆分为第一份数的子金额。
本实施例中,根据用户发送的红包总份数,将红包总金额拆分为第一份数的子金额;第一份数与所述红包总份数相等;红包总金额拆分为第一份数的子金额,拆分到的所有子金额的数值大小随机产生,所有子金额的数值大小可相等,也可部分相等,也可使任意两个子金额的数值均不相等,只要所有第一份数的子金额的总和与红包总金额数值相等即可,如可将红包总金额为50元、红包总份数为4份的红包,拆分为10、12、13、15。
步骤103、将所述红包总份数及拆分后的所述第一份数的子金额向第二服务端发送,以使所述第二服务端,存储所述红包总份数及所述第一份数的子金额;其中,第二服务端包括redis服务器。
本实施例中,Redis服务器是一个高效的缓存服务器,高并发,高可用。redis属于单线程架构,所有的命令都是先进先出且具有原子性,因此,不会出现同步并发的问题。
redis使用key-value结构存储数据,key的数据类型为String,value的数据类型可为String、list、hash、set和sorted set。
本实施例中,向第二服务端发送拆分后的所述第一份数的子金额,可以队列类型、也可以列表类型,向第二服务端发送,当然也可采用其它任一数据类型向第二服务端发送,使第第二服务端,存储红包总份数及所述第一份数的子金额。
步骤104、接收第一抢红包请求。
本实施例中,抢红包请求可由第一电子设备发起,第一服务端接收第一电子设备发送的抢红包请求。
步骤105、根据所述第一抢红包请求,调用所述第二服务端的减函数进行抢红包操作。
本实施例中,第二服务端包括redis服务端,减函数为redis的Decr函数,decr函数具有自减功能,通过调用Decr函数实现抢红包的操作。
步骤106、接收所述减函数的返回值,所述返回值表示剩余红包数量。
本实施例中,当接收到一个抢红包请求时,Decr函数将剩余红包数量减1,得到当前的剩余红包数量。如,在接收一个抢红包请求前,剩余红包数量为4,当接收该抢红包请求后,Decr函数以4为参数,得到返回值为3,表示此次抢红包请求后,剩余红包数量为3。
步骤107、调用所述第二服务端的索引函数,以使所述索引函数根据所述减函数的返回值及预定查找规则,从所述第二服务端中查找对应的子金额。
本实施例中,索引函数为redis的lindex函数;预定查找规则可为Decr函数的返回值与所述第一列表中的存储位置之间的对应关系。
本实施例中,当Decr函数的返回值为3,在第二服务器中,根据Decr函数的返回值与所述第一列表中的存储位置之间的对应关系,找到第一列表中的存储位置,该存储位置上存有对应的子金额,即该子金额为在所述第二服务端中查找到的对应的子金额,如查找到的子金额可为13。
步骤108、接收所述第二服务端的索引函数返回的子金额,并将所述子金额向发起所述第一抢红包请求的客户端发送。
本实施例中,第一服务器接收lindex函数返回的子金额,并且将子金额向发起所述第一抢红包请求的客户端。
本实施例,通过将接收到的所述红包总金额拆分为第一份数的子金额,并将所述红包总份数及拆分后的所述第一份数的子金额向第二服务端(包括redis服务器)发送,之后,根据接收到的第一抢红包请求,调用所述第二服务端的减函数进行抢红包操作,再调用并接收第二服务端的索引函数返回的子金额,而后,将所述子金额向发起所述第一抢红包请求的客户端发送。由于redis是单线程架构,每个时刻只有一个线程能够对减函数进行调用,通过调用第二服务端(包括redis服务器)的减函数进行抢红包操作,再调用第二服务端的索引函数,接收索引函数根据减函数的返回值及预定查找规则查找到的子金额,向发起所述第一抢红包请求的客户端发送对应子金额,即某一时刻只处理一个抢红包请求,这样,在确保某一时刻只处理一个抢红包请求的同时,提高了完成抢红包操作的可靠性。
作为一可选实施方式,所述方法,还包括:
步骤109、监听所述第二服务端中剩余红包数量是否为0。
本实施例中,第一服务端监听具体可采用不间断地向第二服务端发送询问信号的方式,或第二服务端采用阻塞函数brpop对第一服务端的询问信号进行阻塞,具体地,在第二服务端建立一个空列表,当第二服务端中的decr函数返回值为0时,通过lpush函数,将任一元素插入空列表中,一直在监听这个空列表的brpop函数,将列表中的元素移出,触发第一服务器的询问信号从阻塞状态返回。
步骤110、若监听到所述第二服务端中剩余红包数量为0,则向当前发起抢红包请求的客户端返回红包抢完消息,并结束流程。
本实施例中,当第一服务端监听到第二服务端中的剩余红包数量为0时,向正在发起抢红包请求的客服端返回红包被抢完的信息,红包被抢完的信息可为文字、动画、语音等形式任一种形式,或其中多种组合形式,红包抢完消息的具体形式和内容不限;当剩余红包数量为0,第一服务端不再对正在发起红包的请求执行后续的操作流程。
本实施例中的步骤109和步骤110可在步骤101之前,可在步骤108之后,也可在步骤101-108之间的任一位置。
本实施例,通过第一服务端监听所述第二服务端中剩余红包数量是否为0,
如果监听到剩余红包数量为0,则向当前发起抢红包请求的客户端返回红包抢完消息并结束流程,这样,能够使得当前发起抢红包请求的客户端的用户获知红包抢完的消息,并且,第一服务端不再对正在发起红包的请求执行后续的操作流程,从而能够节省第一服务端的运行资源。
作为一可选实施方式,所述方法,还包括:获取所述第二服务端中存储的得奖列表,以将所述得奖列表向红包发起者的客户端及发起抢红包请求的客户端发送;所述的得奖列表中有已抢到红包的用户标识信息及抢到的子金额信息。
本实施例中,红包发起者的客户端为向第一服务端发送红包的客户端;发起抢红包请求的客户端为希望通过抢发出红包请求,获取红包子金额的客户端。
本实施例中,用户标识信息可为用户的账号、姓名或昵称等信息;用户表示信息和抢到的子金额相对应,如已抢到红包的用户抢到的子金额为12、用户标识为mary,子金额12和Mary相对应。
本实施例中的方法,可在步骤107和步骤108之间,也可在步骤108之后。
本实施例,通过获取所述第二服务端中存储的得奖列表,并且得奖列表中有已抢到红包的用户标识信息及抢到的子金额信息,这样,便于将所述得奖列表向红包发起者的客户端及发起抢红包请求的客户端发送,进一步地,便于接收到得奖列表的客户端的用户查看得抢到红包的用户及抢到的子金额信息,提高用户体验。
图2为本发明提供的一种抢红包的装置的实施例一的结构示意图,如图2所示,应用于第一服务端。本实施例的装置可以包括:第一接收模块11、拆分模块12、第一发送模块13、第二接收模块14、第一调用模块15、返回值接收模块16、第二调用模块17、第三接收模块18,其中,
第一接收模块11,用于接收客户端发送的红包总金额和红包总份数;
拆分模块12,用于根据所述红包总金额和红包总份数,将所述红包总金额拆分为第一份数的子金额;
第一发送模块13,用于将所述红包总份数及拆分后的所述第一份数的子金额向第二服务端发送,以使所述第二服务端,存储所述红包总份数及所述第一份数的子金额;其中,第二服务端包括redis服务器;
第二接收模块14,用于接收第一抢红包请求;
第一调用模块15,用于根据所述第一抢红包请求,调用所述第二服务端的减函数进行抢红包操作;
返回值接收模块16,用于接收所述减函数的返回值,所述返回值表示剩余红包数量;
第二调用模块17,用于调用所述第二服务端的索引函数,以使所述索引函数根据所述减函数的返回值及预定查找规则,从所述第二服务端中查找对应的子金额;
第三接收模块18,用于接收所述第二服务端的索引函数返回的子金额,并将所述子金额向发起所述第一抢红包请求的客户端发送。
本实施例的装置,可以用于执行图1所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
本实施例的装置,通过将接收到的所述红包总金额拆分为第一份数的子金额,并将所述红包总份数及拆分后的第一份数的子金额向第二服务端(包括redis服务器)发送,之后,根据接收到的第一抢红包请求,调用所述第二服务端的减函数进行抢红包操作,再调用并接收第二服务端的索引函数返回的子金额,而后,将所述子金额向发起所述第一抢红包请求的客户端发送。由于redis是单线程架构,每个时刻只有一个线程能够对减函数进行调用,通过调用第二服务端(包括redis服务器)的减函数进行抢红包操作,再调用第二服务端的索引函数,接收索引函数根据减函数的返回值及预定查找规则查找到的子金额,向发起所述第一抢红包请求的客户端发送对应子金额,即某一时刻只处理一个抢红包请求,这样,在确保某一时刻只处理一个抢红包请求的同时,提高了完成抢红包操作的可靠性。
作为一可选实施方式,所述装置还包括:监听模块,所述监听模块,用于监听所述第二服务端服务器中剩余红包数量是否为0;红包抢完消息返回模块用于,若监听到所述第二服务端中剩余红包数量为0,则向当前发起抢红包请求的客户端返回红包抢完消息。
作为一可选实施方式,所述装置还包括:获取模块,用于获取所述第二服务端中存储的得奖列表,以将所述得奖列表向红包发起者的客户端及发起抢红包请求的客户端发送;所述的得奖列表中有已抢到红包的用户标识信息及抢到的子金额信息。
图3为本发明提供的一种抢红包的方法的实施例二的流程示意图,如图1所示,应用于第二服务端,第二服务端包括redis服务器。
redis是一个高效的缓存服务器,高并发,高可用。redis属于单线程架构,所有的命令都是先进先出且具有原子性,因此,不会出现同步并发的问题。
redis使用key-value结构存储数据,key的数据类型为String,value的数据类型可为String、list、hash、set和sorted set。
本实施例的方法可以包括:
步骤201、接收并存储第一服务端发送的红包总份数和第一份数的子金额;其中,所述第一份数的子金额按照第一顺序存储在第一列表中。
本实施例中,红包总份数可为两个及两个以上的整数;第一份数与所述红包总份数相等;接收到的第一份数的子金额可以队列类型、也可以列表类型,当然也可采用其它任一数据类型;将接收到的子金额按照每个子金额在第一列表中不同存储位置出现的概率相等的原则,随机存储在第一列表中。
作为一可选实施方式,所述接收并存储第一服务端发送的所述第一份数的子金额,包括:
步骤201a、接收第一服务端发送的所述第一份数的子金额。
步骤201b、对所述所述第一份数的子金额,利用重排列函数将所述子金额重新排列后按照第一顺序存储在第一列表中。
本实施例中,重排列为redis里的shuffle函数,用于将子金额顺序打乱,然后,按照每个子金额在第一列表中不同存储位置出现的概率相等的原则,随机存储在第一列表中。
步骤202、接收第一服务端对减函数的调用,通过所述减函数进行抢红包操作。
本实施例中,减函数为redis里的decr函数;当接收到第一服务端对decr函数的调用时,通过decr函数的运行实现抢红包的操作。
步骤203、向所述第一服务端发送返回值,所述返回值表示剩余红包数量。
本实施例中,接收到对decr函数的调用,运行decr函数,将运行结果返回给第一服务端;decr函数具有原子性及自减功能,每次接收到对decr函数的调用,decr函数将剩余红包数量减1,得到新的剩余红包数量,新的剩余红包数量即为decr函数运行结果,并且,即使同一时刻有多个调用请求,但是decr函数同一时刻只能接受一个调用请求,并将结果返回。
步骤204、接收第一服务端对索引函数的调用,所述索引函数根据所述返回值及预定查找规则,查找对应的子金额。
本实施例中,索引函数为redis里的lindex函数,预定查找规则可为返回值与所述第一列表中的存储位置之间的对应关系。
本实施例中,在第二服务器中,根据返回值与所述第一列表中的存储位置之间的对应关系,找到第一列表中的存储位置,该存储位置上存有对应的子金额,即该子金额为在所述第二服务端中查找到的对应的子金额。
步骤205、向所述第一服务端返回查找到的子金额,以使所述第一服务端将所述子金额向发起抢红包请求的客户端发送。
本实施例中,将步骤204中查找到的子金额,向所述第一服务端返回,使所述第一服务端能够将所述子金额向发起抢红包请求的客户端发送。
本实施例,通过包括redis服务器的第二服务器接收并存储第一服务端发送的红包总份数和按照第一顺序存储在第一列表中的所述第一份数的子金额,以及接收第一服务端对减函数的调用,通过所述减函数进行抢红包操作,并向所述第一服务端发送返回值(表示剩余红包数量),再接收第一服务端对索引函数的调用,所述索引函数根据所述返回值及预定查找规则,查找并向第一服务端返回查找到的子金额,以使所述第一服务端将所述子金额向发起抢红包请求的客户端发送。由于redis是单线程架构,每个时刻只有一个线程能够对减函数进行调用,接收第一服务端对减函数的调用,通过所述减函数进行抢红包操作,再接收第一服务端对索引函数的调用,所述索引函数根据所述返回值及预定查找规则,查找并向第一服务端返回查找到的子金额,即某一时刻只处理一个抢红包请求,这样,在确保某一时刻只处理一个抢红包请求的同时,提高了完成抢红包操作的可靠性。
作为一可选实施方式,所述方法,还包括:
步骤206、通过存储函数将已抢到红包的用户标识信息及查找到的子金额信息保存在得奖列表中。
本实施例中,存储函数为redis里的hset函数;用户标识信息可为用户的账号、姓名或昵称等信息;用户表示信息和抢到的子金额相对应,如已抢到红包的用户抢到的子金额为12、用户标识为mary,子金额12和Mary相对应;得奖列表中保存有已抢到红包的用户标识信息及查找到的子金额信息。
步骤207、向所述第一服务端返回所述得奖列表,以使所述第一服务端将所述得奖列表向红包发起者的客户端及发起抢红包请求的客户端发送。
本实施例中,红包发起者的客户端为向第一服务端发送红包的客户端;发起抢红包请求的客户端为希望通过抢发出红包请求,获取红包子金额的客户端。
本实施例中的步骤206和步骤207可在步骤204和步骤205之间,也可在步骤205之后。
本实施例,通过存储函数将已抢到红包的用户标识信息及查找到的子金额信息保存在得奖列表中,并且将得奖列表向所述第一服务端发送,这样,便于使所述第一服务端将所述得奖列表向红包发起者的客户端及发起抢红包请求的客户端发送,进一步地,便于接收到得奖列表的客户端的用户查看得抢到红包的用户及抢到的子金额信息,提高用户体验。
下面采用一个具体的实施例,对上述所示方法实施例的技术方案进行详细说明。
步骤1、接收并存储第一服务端发送的红包总份数为4份和4份的子金额为(10、12、13、15),将子金额通过shuffle函数随机排列得到第一列表,具体为(12、15、10、13),通过rpush命令将第一列表存储到key=”red_envelop”。
步骤2、接收第一服务端对Decr函数的第二次调用,通过所述Decr函数进行抢红包操作,并向所述第一服务端发送Decr函数的返回值,返回值为2,接收第二次调用,剩余红包数量变为2,即返回值表示剩余红包数量。
步骤3、返回值2及返回值与所述第一列表中的存储位置之间的对应关系,具体地,子金额、返回值与所述第一列表中的存储位置之间的对应关系如下表所示。
子金额 存储位置 剩余红包数量
15 1 0
13 2 1
12 3 2
10 4 3
第一服务端对lindex函数的调用,lindex函数根据返回值2及上表中返回值与存储位置、子金额的对应关系,查找到子金额为12。
步骤4、向所述第一服务端返回查找到的子金额12,以使所述第一服务端将所述子金额向发起抢红包请求的客户端发送。
步骤5、通过hset函数将第一次抢红包用户的标识信息a及查找到的子金额10、第二次抢红包用户的标识信息b及查找到的子金额12保存在得奖列表中,并向所述第一服务端返回所述得奖列表。
图4为本发明提供的一种抢红包的装置的实施例二的结构示意图,如图4所示,应用于第二服务端,第二服务端包括redis服务器,本实施例的装置可以包括:第四接收模块21、第五接收模块22、第二发送模块23、第四接收模块24、子金额返回模块25,其中,
第四接收模块21,用于接收并存储第一服务端发送的红包总份数和第一份数的子金额;其中,所述第一份数的子金额按照第一顺序存储在第一列表中;
第五接收模块22,用于接收第一服务端对减函数的调用,通过所述减函数进行抢红包操作;
第二发送模块23,用于向所述第一服务端发送返回值,所述返回值表示剩余红包数量;
第六接收模块24,用于接收第一服务端对索引函数的调用,所述索引函数根据所返回值及预定查找规则,查找对应的子金额;
子金额返回模块25,用于向所述第一服务端返回查找到的子金额,以使所述第一服务端将所述子金额向发起抢红包请求的客户端发送。
本实施例的装置,可以用于执行图3所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
本实施例的装置,通过包括redis服务器的第二服务器接收并存储第一服务端发送的红包总份数和按照第一顺序存储在第一列表中的所述第一份数的子金额,以及接收第一服务端对减函数的调用,通过所述减函数进行抢红包操作,并向所述第一服务端发送返回值(表示剩余红包数量),再接收第一服务端对索引函数的调用,所述索引函数根据所述返回值及预定查找规则,查找并向第一服务端返回查找到的子金额,以使所述第一服务端将所述子金额向发起抢红包请求的客户端发送。由于redis是单线程架构,每个时刻只有一个线程能够对减函数进行调用,接收第一服务端对减函数的调用,通过所述减函数进行抢红包操作,再接收第一服务端对索引函数的调用,所述索引函数根据所述返回值及预定查找规则,查找并向第一服务端返回查找到的子金额,即某一时刻只处理一个抢红包请求,这样,在确保某一时刻只处理一个抢红包请求的同时,提高了完成抢红包操作的可靠性。
作为一可选实施方式,第三接收模块21,还包括:接收子模块和存储子模块,其中,
接收子模块,用于接收第一服务端发送的第一份数的子金额;
存储子模块,对所述第一份数的子金额,利用重排列函数将所述子金额重新排列后按照第一顺序存储在第一列表中。
作为一可选实施方式,所述装置,还包括:保存模块和得奖列表返回模块,其中,
保存模块,用于通过存储函数将已抢到红包的用户标识信息及查找到的子金额信息保存在得奖列表中;
得奖列表返回模块,用于向所述第一服务端返回所述得奖列表,以使所述第一服务端将所述得奖列表向红包发起者的客户端及发起抢红包请求的客户端发送。
需要说明的是,第一服务端和第二服务端可分别安装于不同服务器中,也可安装在同一服务器中。
本发明实施例还提供一种电子设备,所述电子设备包含前述任一实施例所述的装置。
图5为本发明电子设备一个实施例的结构示意图,可以实现本发明图1和3所示实施例的流程,如图5所示,上述电子设备可以包括:壳体41、处理器42、存储器43、电路板44和电源电路45,其中,电路板44安置在壳体41围成的空间内部,处理器42和存储器43设置在电路板44上;电源电路45,用于为上述电子设备的各个电路或器件供电;存储器43用于存储可执行程序代码;处理器42通过读取存储器43中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述任一实施例所述的抢红包的方法。
处理器42对上述步骤的具体执行过程以及处理器42通过运行可执行程序代码来进一步执行的步骤,可以参见本发明图1-3所示实施例的描述,在此不再赘述。
该电子设备以多种形式存在,包括但不限于:
(1)移动通信设备:这类设备的特点是具备移动通信功能,并且以提供话音、数据通信为主要目标。这类终端包括:智能手机(例如iPhone)、多媒体手机、功能性手机,以及低端手机等。
(2)超移动个人计算机设备:这类设备属于个人计算机的范畴,有计算和处理功能,一般也具备移动上网特性。这类终端包括:PDA、MID和UMPC设备等,例如iPad。
(3)便携式娱乐设备:这类设备可以显示和播放多媒体内容。该类设备包括:音频、视频播放器(例如iPod),掌上游戏机,电子书,以及智能玩具和便携式车载导航设备。
(4)服务器:提供计算服务的设备,服务器的构成包括处理器、硬盘、内存、系统总线等,服务器和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。
(5)其他具有数据交互功能的电子设备。
本发明的实施例还提供一种可读存储介质,所述可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现本发明任一实施例提供的方法。
本发明的实施例还提供一种应用程序,所述应用程序被执行以实现本发明任一实施例提供的方法。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。
尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
为了描述的方便,描述以上装置是以功能分为各种单元/模块分别描述。当然,在实施本发明时可以把各单元/模块的功能在同一个或多个软件和/或硬件中实现。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

Claims (10)

1.一种抢红包的方法,其特征在于,应用于第一服务端,包括:
接收客户端发送的红包总金额和红包总份数;
根据所述红包总金额和红包总份数,将所述红包总金额拆分为第一份数的子金额;
将所述红包总份数及拆分后的所述第一份数的子金额向第二服务端发送,以使所述第二服务端,存储所述红包总份数及所述第一份数的子金额;其中,第二服务端包括redis服务器;
接收第一抢红包请求;
根据所述第一抢红包请求,调用所述第二服务端的减函数进行抢红包操作;
接收所述减函数的返回值,所述返回值表示剩余红包数量;
调用所述第二服务端的索引函数,以使所述索引函数根据所述减函数的返回值及预定查找规则,从所述第二服务端中查找对应的子金额;
接收所述第二服务端的索引函数返回的子金额,并将所述子金额向发起所述第一抢红包请求的客户端发送。
2.根据权利要求1所述的抢红包的方法,其特征在于,还包括:
监听所述第二服务端中剩余红包数量是否为0;
若监听到所述第二服务端中剩余红包数量为0,则向当前发起抢红包请求的客户端返回红包抢完消息,并结束流程。
3.根据权利要求1所述的抢红包的方法,其特征在于,还包括:
获取所述第二服务端中存储的得奖列表,以将所述得奖列表向红包发起者的客户端及发起抢红包请求的客户端发送;所述的得奖列表中有已抢到红包的用户标识信息及抢到的子金额信息。
4.一种抢红包的装置,其特征在于,应用于第一服务端,包括:第一接收模块、拆分模块、第一发送模块、第二接收模块、第一调用模块、返回值接收模块、第二调用模块、第三接收模块,其中,
第一接收模块,用于接收客户端发送的红包总金额和红包总份数;
拆分模块,用于根据所述红包总金额和红包总份数,将所述红包总金额拆分为第一份数的子金额;
第一发送模块,用于将所述红包总份数及拆分后的第一份数的子金额向第二服务端发送,以使所述第二服务端,存储所述红包总份数及所述第一份数的子金额;其中,第二服务端包括redis服务器;
第二接收模块,用于接收第一抢红包请求;
第一调用模块,用于根据所述第一抢红包请求,调用所述第二服务端的减函数进行抢红包操作;
返回值接收模块,用于接收所述减函数的返回值,所述返回值表示剩余红包数量;
第二调用模块,用于调用所述第二服务端的索引函数,以使所述索引函数根据所述减函数的返回值及预定查找规则,从所述第二服务端中查找对应的子金额;
第三接收模块,用于接收所述第二服务端的索引函数返回的子金额,并将所述子金额向发起所述第一抢红包请求的客户端发送。
5.根据权利要求4所述的抢红包的装置,其特征在于,还包括:监听模块,
所述监听模块,用于监听所述第二服务端服务器中剩余红包数量是否为0;若监听到所述第二服务端中剩余红包数量为0,则向当前发起抢红包请求的客户端返回红包抢完消息。
6.根据权利要求4所述的抢红包的方法,其特征在于,还包括:获取模块,用于获取所述第二服务端中存储的得奖列表,以将所述得奖列表向红包发起者的客户端及发起抢红包请求的客户端发送;所述的得奖列表中有已抢到红包的用户标识信息及抢到的子金额信息。
7.一种抢红包的方法,其特征在于,应用于第二服务端,第二服务端包括redis服务器,包括:
接收并存储第一服务端发送的红包总份数和第一份数的子金额;其中,所述第一份数的子金额按照第一顺序存储在第一列表中;
接收第一服务端对减函数的调用,通过所述减函数进行抢红包操作;
向所述第一服务端发送返回值,所述返回值表示剩余红包数量;
接收第一服务端对索引函数的调用,所述索引函数根据所述返回值及预定查找规则,查找对应的子金额;
向所述第一服务端返回查找到的子金额,以使所述第一服务端将所述子金额向发起抢红包请求的客户端发送。
8.根据权利要求7所述的抢红包的方法,其特征在于,所述接收并存储第一服务端发送的第一份数的子金额,包括:
接收第一服务端发送的第一份数的子金额;
对所述第一份数的子金额,利用重排列函数将所述子金额重新排列后按照第一顺序存储在第一列表中。
9.根据权利要求7所述的抢红包的方法,其特征在于,还包括:
通过存储函数将已抢到红包的用户标识信息及查找到的子金额信息保存在得奖列表中;
向所述第一服务端返回所述得奖列表,以使所述第一服务端将所述得奖列表向红包发起者的客户端及发起抢红包请求的客户端发送。
10.一种抢红包的装置,其特征在于,应用于第二服务端,第二服务端包括redis服务器,包括:第四接收模块、第五接收模块、第二发送模块、第六接收模块、子金额返回模块,其中,
第四接收模块,用于接收并存储第一服务端发送的红包总份数和第一份数的子金额;其中,所述第一份数的子金额按照第一顺序存储在第一列表中;
第五接收模块,用于接收第一服务端对减函数的调用,通过所述减函数进行抢红包操作;
第二发送模块,用于向所述第一服务端发送返回值,所述返回值表示剩余红包数量;
第六接收模块,用于接收第一服务端对索引函数的调用,所述索引函数根据所返回值及预定查找规则,查找对应的子金额;
子金额返回模块,用于向所述第一服务端返回查找到的子金额,以使所述第一服务端将所述子金额向发起抢红包请求的客户端发送。
CN201910943181.4A 2019-09-30 2019-09-30 一种抢红包的方法、装置、电子设备及可读存储介质 Pending CN110675133A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910943181.4A CN110675133A (zh) 2019-09-30 2019-09-30 一种抢红包的方法、装置、电子设备及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910943181.4A CN110675133A (zh) 2019-09-30 2019-09-30 一种抢红包的方法、装置、电子设备及可读存储介质

Publications (1)

Publication Number Publication Date
CN110675133A true CN110675133A (zh) 2020-01-10

Family

ID=69080591

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910943181.4A Pending CN110675133A (zh) 2019-09-30 2019-09-30 一种抢红包的方法、装置、电子设备及可读存储介质

Country Status (1)

Country Link
CN (1) CN110675133A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111582862A (zh) * 2020-06-26 2020-08-25 腾讯科技(深圳)有限公司 信息处理方法、装置、系统、计算机设备及存储介质
CN112308621A (zh) * 2020-11-04 2021-02-02 深圳市欢太科技有限公司 数据处理方法、装置、计算机存储介质及电子设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140136936A1 (en) * 2012-11-09 2014-05-15 Microsoft Corporation Spreadsheet functions to call rest api sources
CN106095877A (zh) * 2016-06-07 2016-11-09 中国建设银行股份有限公司 一种红包数据处理方法和装置
CN107330680A (zh) * 2017-06-22 2017-11-07 福建中金在线信息科技有限公司 红包控制方法、装置、计算机设备及计算机可读存储介质
CN109242457A (zh) * 2018-09-21 2019-01-18 刘磊 一种抢红包的方法及系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140136936A1 (en) * 2012-11-09 2014-05-15 Microsoft Corporation Spreadsheet functions to call rest api sources
CN106095877A (zh) * 2016-06-07 2016-11-09 中国建设银行股份有限公司 一种红包数据处理方法和装置
CN107330680A (zh) * 2017-06-22 2017-11-07 福建中金在线信息科技有限公司 红包控制方法、装置、计算机设备及计算机可读存储介质
CN109242457A (zh) * 2018-09-21 2019-01-18 刘磊 一种抢红包的方法及系统

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111582862A (zh) * 2020-06-26 2020-08-25 腾讯科技(深圳)有限公司 信息处理方法、装置、系统、计算机设备及存储介质
CN111582862B (zh) * 2020-06-26 2023-06-27 腾讯科技(深圳)有限公司 信息处理方法、装置、系统、计算机设备及存储介质
CN112308621A (zh) * 2020-11-04 2021-02-02 深圳市欢太科技有限公司 数据处理方法、装置、计算机存储介质及电子设备

Similar Documents

Publication Publication Date Title
CN109842621B (zh) 一种减少token存储数量的方法及终端
CN104133825A (zh) 一种匹配客户端用户的方法及装置
CN109451076B (zh) 一种网络请求的合并处理方法、装置及电子设备
CN112087487A (zh) 模型训练任务的调度方法、装置、电子设备及存储介质
CN106776785B (zh) 一种数据写入方法及装置和数据处理系统
CN109787884B (zh) 一种消息推送方法和装置
CN110675133A (zh) 一种抢红包的方法、装置、电子设备及可读存储介质
CN115023697A (zh) 数据查询方法、装置及服务器
CN110652728A (zh) 一种游戏资源管理方法、装置、电子设备及存储介质
CN109710502B (zh) 日志传输方法、装置及存储介质
CN113535226B (zh) 应用下载方法、终端、服务器、计算机设备以及存储介质
CN106933323B (zh) 一种优化应用程序耗电的方法、装置及电子设备
CN111597041A (zh) 一种分布式系统的调用方法、装置、终端设备及服务器
CN111124672A (zh) 基于Redis集群的数据分配的方法及相关设备
CN111782294A (zh) 一种应用程序的运行方法、装置、电子设备及存储介质
CN108021597B (zh) 一种并行计数器、服务器和一种计数方法
CN115270161A (zh) 基于加密插件的加密方法、装置及相关产品
CN114338102A (zh) 安全检测方法、装置、电子设备及存储介质
CN111143351B (zh) Imsi数据管理方法及设备
CN113760876A (zh) 一种数据过滤方法和装置
CN109885622B (zh) 一种数据处理设备、系统以及多节点数据处理方法
CN112667949A (zh) 用于前端网关的数据处理方法及装置
CN113986132A (zh) 异构网络中共享存储资源的方法、装置及相关产品
CN110880042B (zh) 网络游戏报名信息处理方法及装置
CN113672248A (zh) 一种补丁获取方法、装置、服务端及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right

Effective date of registration: 20201207

Address after: Room 115, area C, 1 / F, building 8, yard 1, yaojiayuan South Road, Chaoyang District, Beijing 100123

Applicant after: Beijing LEMI Technology Co.,Ltd.

Address before: East District, 2nd floor, 33 Xiaoying West Road, Haidian District, Beijing 100085

Applicant before: BEIJING KINGSOFT INTERNET SECURITY SOFTWARE Co.,Ltd.

TA01 Transfer of patent application right
RJ01 Rejection of invention patent application after publication

Application publication date: 20200110

RJ01 Rejection of invention patent application after publication