CN110704485A - 虚拟资源处理方法、装置及存储介质 - Google Patents
虚拟资源处理方法、装置及存储介质 Download PDFInfo
- Publication number
- CN110704485A CN110704485A CN201910866400.3A CN201910866400A CN110704485A CN 110704485 A CN110704485 A CN 110704485A CN 201910866400 A CN201910866400 A CN 201910866400A CN 110704485 A CN110704485 A CN 110704485A
- Authority
- CN
- China
- Prior art keywords
- virtual resource
- account
- virtual
- cache
- redis
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Payment architectures, schemes or protocols
- G06Q20/04—Payment circuits
- G06Q20/06—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
- G06Q20/065—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Business, Economics & Management (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Accounting & Taxation (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Finance (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开关于一种虚拟资源处理方法及装置,其中,该方法用于服务器,包括:接收第一账户发送的虚拟资源分配指令,虚拟资源分配指令中包括待分配的虚拟资源总量、以及待分配的账户数量;根据虚拟资源分配指令将虚拟资源总量写入数据库中;生成第一数量个虚拟资源分量,并将各个虚拟资源分量写入指定缓存中;其中,第一数量与账户数量相同,各个虚拟资源分量之和与虚拟资源总量相同,指定缓存用于在虚拟资源获取过程中提供虚拟资源分量;向第一账户发送虚拟资源分配成功指令。因此,本公开提高了在虚拟资源获取阶段中虚拟资源处理的效率,也提高了用户体验。
Description
技术领域
本公开涉及计算机领域,尤其涉及一种虚拟资源处理方法、装置及存储介质。
背景技术
在互联网时代,虚拟资源(例如,红包)是移动互联网与线下商业结合的重要手段。相关技术中,用户发送虚拟资源分配(例如,发红包)指令后,服务端通常会将待分配的虚拟资源总量写入数据库,当接收到用户发送的虚拟资源获取(例如,抢红包)指令后,服务端会从数据库中取出虚拟资源总量并锁住当前虚拟资源,其他用户不可抢,并随机给虚拟资源获取(例如,抢红包)用户生成一个介于0和虚拟资源总量的数值、以及将虚拟资源总量减去给当前用户随机生成的数值后回写数据库,最后返回当前用户抢到的虚拟资源。但是,相关技术中的虚拟资源获取(例如,抢红包)效率较低,用户体验较差,并给数据库造成极大的压力。
发明内容
本公开提供一种虚拟资源处理方法、装置及存储介质,以至少解决相关技术中虚拟资源获取(例如,抢红包)效率较低,用户体验较差,并给数据库造成极大的压力的问题。
本公开的技术方法如下:
根据本公开实施例的第一方面,提供一种虚拟资源处理方法,所述方法用于服务器,包括:
接收第一账户发送的虚拟资源分配指令,所述虚拟资源分配指令中包括待分配的虚拟资源总量、以及待分配的账户数量
根据所述虚拟资源分配指令将所述虚拟资源总量写入数据库中;;
生成第一数量个虚拟资源分量,并将各个所述虚拟资源分量写入指定缓存中;其中,所述第一数量与所述账户数量相同,各个所述虚拟资源分量之和与所述虚拟资源总量相同,所述指定缓存用于在虚拟资源获取过程中提供所述虚拟资源分量;
向所述第一账户发送虚拟资源分配成功指令。
在一可能的实现方式中,所述指定缓存包括redis缓存,所述redis缓存是以redis列表这一数据结构来存储各个所述虚拟资源分量;
所述将各个所述虚拟资源分量写入指定缓存中,包括:
将各个所述虚拟资源分量随机写入所述redis列表中,得到一个随机数值的虚拟资源分量队列。
在一可能的实现方式中,所述将各个所述虚拟资源分量随机写入所述redis列表中,包括:
在所述redis列表的头部或尾部随机压入各个所述虚拟资源分量。
在一可能的实现方式中,还包括:
接收第二账户发送的虚拟资源获取指令;
根据所述虚拟资源获取指令从所述指定缓存中获取一个虚拟资源分量,得到待分配至所述第二账户的虚拟资源;
将待分配至所述第二账户的虚拟资源发送至所述第二账户。
在一可能的实现方式中,所述指定缓存包括redis缓存,所述redis缓存是以redis列表这一数据结构来存储各个所述虚拟资源分量;
所述根据所述虚拟资源获取指令从所述指定缓存中获取一个虚拟资源分量,得到待分配至所述第二账户的虚拟资源,包括:
从所述redis列表中随机获取一个虚拟资源分量,得到待分配至所述第二账户的虚拟资源。
在一可能的实现方式中,所述从所述redis列表中随机获取一个虚拟资源分量,包括;
从所述redis列表中的头部或尾部弹出第一个虚拟资源分量。
在一可能的实现方式中,还包括:
通过异步线程将待分配至所述第二账户的虚拟资源写入与所述第二账户相关的数据库中。
根据本公开实施例的第二方面,提供一种虚拟资源处理装置,所述装置用于服务器,包括:
第一接收单元,被配置为接收第一账户发送的虚拟资源分配指令,所述虚拟资源分配指令中包括待分配的虚拟资源总量、以及待分配的账户数量;
第一存储单元,被配置为根据所述虚拟资源分配指令将所述虚拟资源总量写入数据库中;
第二存存储单元,被配置为生成第一数量个虚拟资源分量,并将各个所述虚拟资源分量写入指定缓存中;其中,所述第一数量与所述账户数量相同,各个所述虚拟资源分量之和与所述虚拟资源总量相同,所述指定缓存用于在虚拟资源获取过程中提供所述虚拟资源分量;
第一发送单元,被配置为向所述第一账户发送虚拟资源分配成功指令。
在一可能的实现方式中,所述指定缓存包括redis缓存,所述redis缓存是以redis列表这一数据结构来存储各个所述虚拟资源分量;
所述第二存储单元包括:
写入子单元,被配置为将各个所述虚拟资源分量随机写入所述redis列表中,得到一个随机数值的虚拟资源分量队列。
在一可能的实现方式中,所述写入子单元包括;
压入模块,被配置为在所述redis列表的头部或尾部随机压入各个所述虚拟资源分量。
在一可能的实现方式中,还包括:
第二接收单元,被配置为接收第二账户发送的虚拟资源获取指令;
获取单元,被配置为根据所述虚拟资源获取指令从所述指定缓存中获取一个虚拟资源分量,得到待分配至所述第二账户的虚拟资源;
第二发送单元,被配置为将待分配至所述第二账户的虚拟资源发送至所述第二账户。
在一可能的实现方式中,所述指定缓存包括redis缓存,所述redis缓存是以redis列表这一数据结构来存储各个所述虚拟资源分量;
所述获取单元包括:
获取子单元,被配置为从所述redis列表中随机获取一个虚拟资源分量,得到待分配至所述第二账户的虚拟资源。
在一可能的实现方式中,所述获取子单元包括:
弹出模块,被配置为从所述redis列表中的头部或尾部弹出第一个虚拟资源分量。
在一可能的实现方式中,还包括:
第三存储单元,被配置为通过异步线程将待分配至所述第二账户的虚拟资源写入与所述第二账户相关的数据库中。
根据本公开实施例的第三方面,提供一种虚拟资源处理装置,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如上述第一方面所述的虚拟资源处理方法。
根据本公开实施例的第四方面,提供一种存储介质,当所述存储介质中的指令由虚拟资源处理装置的处理器执行时,使得虚拟资源处理装置能够执行如上述第一方面所述的虚拟资源处理方法。
本公开的实施例提供的技术方案至少带来以下有益效果:
本公开中的服务器在接收到第一账户发送的虚拟资源分配指令后,可以根据第一账户的虚拟资源分配指令将虚拟资源总量写入数据库中,生成第一数量个虚拟资源分量,并将各个虚拟资源分量写入指定缓存中,该指定缓存用于在虚拟资源获取过程中提供各个虚拟资源分量,以及向第一账户发送虚拟资源分配成功指令,这样服务器在虚拟资源获取阶段就完成了虚拟资源拆分和存储,从而提高了在虚拟资源获取阶段中虚拟资源处理的效率,也提高了用户体验,尤其是将各个虚拟资源分量写入指定缓存中,这样在虚拟资源获取(例如,抢红包)阶段中只操作指定缓存既可,还避免了高并发的虚拟资源获取给数据库造成极大的压力。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1是根据一示例性实施例示出的一种虚拟资源处理方法的流程图。
图2是根据一示例性实施例示出的另一种虚拟资源处理方法的流程图。
图3是根据一示例性实施例示出的另一种虚拟资源处理方法的流程图。
图4是根据一示例性实施例示出的另一种虚拟资源处理方法的流程图。
图5是根据一示例性实施例示出的另一种虚拟资源处理方法的流程图。
图6是根据一示例性实施例示出的另一种虚拟资源处理方法的信息交互图。
图7是根据一示例性实施例示出的一种虚拟资源处理装置框图。
图8是根据一示例性实施例示出的另一种虚拟资源处理装置框图。
图9是根据一示例性实施例示出的另一种虚拟资源处理装置框图。
图10是根据一示例性实施例示出的另一种虚拟资源处理装置框图。
图11是根据一示例性实施例示出的另一种虚拟资源处理装置框图。
图12是根据一示例性实施例示出的另一种虚拟资源处理装置框图。
图13根据一示例性实施例示出的一种用于虚拟资源处理装置的一结构示意图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。
以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
图1是根据一示例性实施例示出的一种虚拟资源处理方法的流程图,该虚拟资源处理方法可以用于服务器,比如,用于处理在微信、QQ、支付宝等应用上发红包和抢红包的服务器。如图1所示,该虚拟资源方法包括以下步骤S11-S14:
在步骤S11中,接收第一账户发送的虚拟资源分配指令,该虚拟资源分配指令中包括待分配的虚拟资源总量、以及待分配的账户数量。
本公开实施例中,该虚拟资源处理过程可以包括虚拟资源分配过程(例如,发红包)和虚拟资源获取(例如,抢红包)过程。其中,第一账户的虚拟资源分配指令可以为发红包指令,第一账户可以用于表征分配虚拟资源(例如,发红包)的账户,待分配的虚拟资源总量(例如,红包总金额)可以是该第一账户输入的金额数量,比如:100元;待分配的账户数量(例如,红包个数)可以是该第一账户输入的红包数量,比如:10个。
在步骤S12中,根据第一账户的虚拟资源分配指令将虚拟资源总量写入数据库中。
本公开实施例中,在虚拟资源分配过程(例如,发红包)中,除了根据第一账户的虚拟资源分配(例如,发红包)指令将虚拟资源总量(例如,红包总金额)写入数据库中之外,还需要从第一账户的账户钱包中扣除该虚拟资源总量(例如,红包总金额)。
比如:红包总金额为100元,服务器需要从第一账户的账户钱包中扣除该100元。
在步骤S13中,生成第一数量个虚拟资源分量,并将各个虚拟资源分量写入指定缓存中;其中,所述第一数量与所述账户数量相同,各个所述虚拟资源分量之和与所述虚拟资源总量相同,所述指定缓存用于在虚拟资源获取过程中提供所述虚拟资源分量。
本公开实施例中,在虚拟资源分配过程(例如,发红包)中,生成第一数量个虚拟资源分量(例如,子红包),并将各个虚拟资源分量(例如,子红包)写入指定缓存中,其目的是在虚拟资源获取(例如,抢红包)过程中,只操作该指定缓存,而不需要操作数据库,这样可以让账户在虚拟资源获取(例如,抢红包)时感受到在很短的时间内即可看到虚拟资源获取(例如,抢红包)结果,从而提高了虚拟资源获取(例如,抢红包)效率。
比如:红包总金额为100元,红包个数为10个,服务器在发红包过程中,会按照产品策略将100元分成10个子红包,再将这些子红包的金额写入指定缓存中,这样便于在抢红包过程中,可以直接从该指定缓存获取子红包的金额。
在一实施例中,所述指定缓存包括redis缓存,所述redis缓存是以redis列表这一数据结构来存储各个所述虚拟资源分量(例如,子红包);在执行步骤S13中,可以采用但不限于以下实现形式:
(1-1)将各个所述虚拟资源分量(例如,子红包)随机写入所述redis列表中,得到一个随机数值的虚拟资源分量(例如,子红包)队列。
在一实施例中,上述(1-1)中将各个所述虚拟资源分量(例如,子红包)随机写入所述redis列表中时,可以采用但不限于以下实现形式:
(2-1)在所述redis列表的头部或尾部随机压入各个所述虚拟资源分量(例如,子红包)。
上述(1-1)、(2-1),其具体实现过程可参见图2所示实施例。
在步骤S14中,向第一账户发送虚拟资源分配成功指令。
在一实施例中,在执行步骤S14之后,还可以包括以下过程,其具体实现过程可参见图3所示实施例:
(3-1)接收第二账户发送的虚拟资源获取(例如,抢红包)指令;
(3-2)根据所述虚拟资源获取(例如,抢红包)指令从所述指定缓存中获取一个虚拟资源分量(例如,子红包),得到待分配至所述第二账户的虚拟资源;
(3-3)将待分配至所述第二账户的虚拟资源发送至所述第二账户。
在一实施例中,所述指定缓存包括redis缓存,所述redis缓存是以redis列表这一数据结构来存储各个所述虚拟资源分量(例如,子红包);在执行(3-2)中,可以采用但不限于以下实现形式:
(4-1)从所述redis列表中随机获取一个虚拟资源分量(例如,子红包),得到待分配至所述第二账户的虚拟资源。
在一实施例中,在执行上述(4-1)中从所述redis列表中获取一个虚拟资源分量(例如,子红包)时,可以采用但不限于以下实现形式:
(5-1)从所述redis列表中的头部或尾部弹出第一个虚拟资源分量(例如,子红包)。
上述(4-1)、(5-1)其具体实现过程可参见图4所示实施例。
在一实施例中,在执行(3-3)中,可以通过异步线程将待分配至所述第二账户的虚拟资源写入数据库中。其具体实现过程可参见图5所示实施例。
由上述实施例可见,在接收到第一账户发送的虚拟资源分配指令后,可以根据第一账户的虚拟资源分配指令将虚拟资源总量写入数据库中,生成第一数量个虚拟资源分量,并将各个虚拟资源分量写入指定缓存中,该指定缓存用于在虚拟资源获取过程中提供各个虚拟资源分量,以及向第一账户发送虚拟资源分配成功指令,这样服务器在虚拟资源获取阶段就完成了虚拟资源拆分和存储,从而提高了在虚拟资源获取阶段中虚拟资源处理的效率,也提高了用户体验,尤其是将各个虚拟资源分量写入指定缓存中,这样在虚拟资源获取(例如,抢红包)阶段中只操作指定缓存既可,还避免了高并发的虚拟资源获取给数据库造成极大的压力。
图2是根据一示例性实施例示出的另一种虚拟资源处理方法的流程图,该虚拟资源处理方法可以用于服务器,并建立在图1所示方法的基础上,所述指定缓存包括redis缓存,所述redis缓存是以redis列表这一数据结构存储各个所述虚拟资源分量;如图2所示,在执行步骤S13中将各个虚拟资源分量写入指定缓存中时,可以包括以下步骤S21:
在步骤S21中,将各个虚拟资源分量随机写入redis缓存中的redis列表中,得到一个随机数值的虚拟资源分量队列。
在一实施例中,在执行步骤S21中将各个所述虚拟资源分量(例如,子红包)随机写入所述redis列表中时,可以在所述redis列表的头部或尾部随机压入各个所述虚拟资源分量(例如,子红包)。
上述公开实施例中,Redis缓存是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API(ApplicationProgramming Interface,应用程序编程接口)。其中,ANSI C是由ANSI(AMERICAN NATIONALSTANDARDS INSTITUTE,美国国家标准协会ANSI)及ISO(International Organization forStandardization,国际标准化组织)推出的关于C语言的标准。还有,Key-Value数据库查询速度快、存放数据量大、支持高并发,非常适合通过主键进行查询,但不能进行复杂的条件查询。其中,key是关键字,value是值。
上述Redis缓存可以是以redis列表这一数据结构存储各个所述子红包。
其中,redis列表是一种简单的字符串列表,其是可以按照插入顺序进行排序。服务器可以在所述redis列表的头部写入各个所述虚拟资源分量(例如,子红包),也可以在所述redis列表的尾部随机写入各个所述子红包。
比如:lpush命令用于在redis列表的头部插入一个子红包,而rpush用于在redis列表的尾部插入一个子红包。
另外,一个redis列表最多可以包含4294967295个元素(即每个列表可以超过40亿个元素)。而且,从时间复杂性的角度来看,redis列表的主要特点是支持在头部和尾部附近不断地插入和删除元素,即使插入了数百万个项目,其访问元素的速度非常快。
在一实施例中,执行步骤S22中将各个所述虚拟资源分量(例如,子红包)随机写入所述redis列表中时,可以采用但不限于以下实现形式:
(2-1)在所述redis列表的头部或尾部随机压入各个所述虚拟资源分量(例如,子红包)。
由上述实施例可见,在将各个虚拟资源分量(例如,子红包)写入指定缓存中时,可以将各个虚拟资源分量(例如,子红包)随机写入redis缓存中的redis列表中,得到一个随机数值的虚拟资源分量(例如,子红包)队列,由于redis作为高效的缓存工具、同时支持redis列表这种数据结构,从而极大的减少了虚拟资源处理的实现复杂度,并提高了虚拟资源处理的速度。
图3是根据一示例性实施例示出的另一种虚拟资源处理方法的流程图,该虚拟资源处理方法可以用于服务器,并建立在图1所示方法的基础上,如图3所示,该虚拟资源处理方法还可以包括以下步骤S31-S22:
在步骤S31中,接收第二账户发送的虚拟资源获取指令。
本公开实施例中,该虚拟资源处理过程可以包括虚拟资源分配过程(例如,发红包)和虚拟资源获取(例如,抢红包)过程。其中,第二账户的虚拟资源获取指令可以为抢红包指令,第二账户用于表征获取虚拟资源(例如,抢红包)的账户,该账户可以与发红包的账户相同,也可以与发红包的账户不同。
在步骤S32中,根据第二账户的虚拟资源获取指令从指定缓存中获取一个虚拟资源分量,得到待分配至第二账户的虚拟资源。
本公开实施例中,由于在虚拟资源分配过程(例如,发红包)中,会生成第一数量个虚拟资源分量(例如,子红包),并将各个虚拟资源分量写入指定缓存中,所以在虚拟资源获取(例如,抢红包)过程中,可以从指定缓存中获取一个虚拟资源分量(例如,子红包)。并且,在从指定缓存中获取一个虚拟资源分量(例如,子红包)时,可以按照一定的规则获取该虚拟资源分量(例如,子红包),比如:指定缓存中保存有10个子红包,可以从这10个子红包中随机获取一个子红包。
在步骤S33中,将待分配至第二账户的虚拟资源发送至第二账户。
本公开实施例中,在虚拟资源获取(例如,抢红包)过程中,将待分配至第二账户的虚拟资源(例如,第二账户的抢红包金额)发送至第二账户的目的,是为了第二账户根据该抢红包金额获知自身抢到的红包大小。
由上述实施例可见,在接收第二账户发送的虚拟资源获取指令时,可以直接从指定缓存中获取一个虚拟资源分量,得到待分配至第二账户的虚拟资源,并将待分配至第二账户的虚拟资源,从而提高了在虚拟资源获取阶段中虚拟资源处理的速度,还提高了虚拟资源处理的实用性。
图4是根据一示例性实施例示出的另一种虚拟资源处理方法的流程图,该虚拟资源处理方法可以用于服务器,并建立在图3所示方法的基础上,所述指定缓存包括redis缓存,所述redis缓存是以redis列表这一数据结构存储各个所述虚拟资源分量;在步骤S32中从指定缓存中获取一个虚拟资源分量时,如图4所示,可以包括以下步骤S41:
在步骤S41中,从redis列表中随机获取一个虚拟资源分量,得到待分配至第二账户的虚拟资源。
在一实施例中,执行步骤S41中从redis列表中随机获取一个虚拟资源分量(例如,子红包)时,可以从所述redis列表中的头部或尾部弹出第一个虚拟资源分量(例如,子红包)。
上述公开实施例中,若服务器在所述redis列表的头部写入各个所述虚拟资源分量(例如,子红包),则可以从redis列表中的头部获取第一个虚拟资源分量(例如,子红包),得到待分配至所述第二账户的虚拟资源(例如,第二账户的抢红包金额);若服务器在redis列表的尾部随机写入各个所述虚拟资源分量(例如,子红包),则可以从redis列表中的尾部获取第一个虚拟资源分量(例如,子红包),得到待分配至所述第二账户的虚拟资源(例如,第二账户的抢红包金额)。
比如:通过线上服务质量统计可以看到,在使用数据库的抢红包操作的请求平均耗时在8秒左右,而通过该redis列表的抢红包操作平均耗时在240毫秒左右。
由上述实施例可见,在根据第二账户的虚拟资源获取指令从指定缓存中获取一个虚拟资源分量时,可以直接从从redis列表中随机获取一个虚拟资源分量,得到待分配至第二账户的虚拟资源,比如:从redis列表中的头部或尾部弹出第一个虚拟资源分量,由于redis作为高效的缓存工具、同时支持redis列表这种数据结构,从而极大的加快了虚拟资源获取的处理速度,还提高了虚拟资源处理的可靠性。
图5是根据一示例性实施例示出的另一种虚拟资源处理方法的流程图,该虚拟资源处理方法可以用于服务器,并建立在图3或图4所示方法的基础上,在步骤S33之后,如图5所示,该虚拟资源处理方法可以包括以下步骤S51:
在步骤S51中,通过异步线程将待分配至第二账户的虚拟资源写入与第二账户相关的数据库中。
本公开实施例中,待分配至第二账户的虚拟资源可以为第二账户的抢红包金额,在通过异步线程将第二账户的抢红包金额写入数据库中之外,还需要给第二账户的账户钱包中加入该抢红包金额。
比如:抢红包金额为11元,服务器需要给第二账户的账户钱包中加入该11元。
由上述实施例可见,在虚拟资源获取(例如,抢红包)的同时,还可以通过异步线程将待分配至第二账户的虚拟资源写入数据库中,这样使得写入数据库的操作不影响其他账户获取虚拟资源(例如,抢红包),从而保证了在虚拟资源获取阶段中虚拟资源处理的较快速度,极大地满足了用户在虚拟资源处理速度上的较高要求。
图6是根据一示例性实施例示出的另一种虚拟资源处理方法的信息交互图。其中,虚拟资源可以为红包。如图6所示,包括:发红包的账户A、抢红包的账户B,服务器、redis缓存、数据库、账户钱包;其进行虚拟资源处理过程具体包括:
(1)账户A发红包,红包总金额为100元、红包个数为10个;
(2)从账户钱包中扣除账户A的红包总金额100元;
(3)账户钱包返回扣除成功;
(4)服务器将账户A发了红包总金额100元写入数据库;
(5)数据库返回写入成功;
(6)服务器将红包总金额100元红包拆分成10个子红包,并写入redis缓存中的redis列表中;
(7)redis缓存返回写入成功;
(8)服务器向账户A返回发红包成功。
(9)账户B向服务器发送抢红包请求指令;
(10)服务器从redis缓存中的redis列表弹出一个子红包(时间复杂度O(1)),比如:11元;
(11)redis缓存返回子红包金额11元;
(12)服务器向账户B返回抢红包成功;
(13)服务器将账户B的抢红包金额11元写入数据库中;
(14)服务器给账户B的账户钱包中加入该抢红包金额11元。
图7是根据一示例性实施例示出的一种虚拟资源处理装置框图,该虚拟资源处理装置可以用于服务器,并建立图1所示方法的基础上,如图7所示,该虚拟资源处理装置可以包括:第一接收单元71、第一存储单元72、第二存储单元73和第一发送单元74。
第一接收单元71,被配置为接收第一账户发送的虚拟资源分配指令,所述虚拟资源分配指令中包括待分配的虚拟资源总量、以及待分配的账户数量;
第一存储单元72,被配置为根据所述虚拟资源分配指令将所述虚拟资源总量写入数据库中;
第二存储单元73,被配置为生成第一数量个虚拟资源分量,并将各个所述虚拟资源分量写入指定缓存中;其中,所述第一数量与所述账户数量相同,各个所述虚拟资源分量之和与所述虚拟资源总量相同,所述指定缓存用于在虚拟资源获取过程中提供所述虚拟资源分量;
第一发送单元74,被配置为向所述第一账户发送虚拟资源分配成功指令。
由上述实施例可见,在接收到第一账户发送的虚拟资源分配指令后,可以根据第一账户的虚拟资源分配指令将虚拟资源总量写入数据库中,生成第一数量个虚拟资源分量,并将各个虚拟资源分量写入指定缓存中,该指定缓存用于在虚拟资源获取过程中提供各个虚拟资源分量,以及向第一账户发送虚拟资源分配成功指令,这样服务器在虚拟资源获取阶段就完成了虚拟资源拆分和存储,从而提高了在虚拟资源获取阶段中虚拟资源处理的效率,也提高了用户体验,尤其是将各个虚拟资源分量写入指定缓存中,这样在虚拟资源获取(例如,抢红包)阶段中只操作指定缓存既可,还避免了高并发的虚拟资源获取给数据库造成极大的压力。
在一实施例中,建立在图7所示装置的基础上,如图8所示,所述指定缓存包括redis缓存,所述redis缓存是以redis列表这一数据结构来存储各个所述虚拟资源分量;所述第二存储单元73可以包括:写入子单元81。
写入子单元81,被配置为将各个所述虚拟资源分量随机写入所述redis列表中,得到一个随机数值的虚拟资源分量队列。
在一实施例中,建立在图8所示装置的基础上,如图9所示,所述写入子单元81可以包括:压入模块91。
压入模块91,被配置为在所述redis列表的头部或尾部随机压入各个所述虚拟资源分量。
由上述实施例可见,在将各个虚拟资源分量(例如,子红包)写入指定缓存中时,可以将各个虚拟资源分量(例如,子红包)随机写入redis缓存中的redis列表中,得到一个随机数值的虚拟资源分量(例如,子红包)队列,由于redis作为高效的缓存工具、同时支持redis列表这种数据结构,从而极大的减少了虚拟资源处理的实现复杂度,并提高了虚拟资源处理的速度。
在一实施例中,建立在图7所示装置的基础上,如图10所示,该虚拟资源处理装置还可以包括:
第二接收单元101,被配置为接收第二账户发送的虚拟资源获取指令;
获取单元102,被配置为根据所述虚拟资源获取指令从所述指定缓存中获取一个虚拟资源分量,得到待分配至所述第二账户的虚拟资源;
第二发送单元103,被配置为将待分配至所述第二账户的虚拟资源发送至所述第二账户。
由上述实施例可见,在接收第二账户发送的虚拟资源获取指令时,可以直接从指定缓存中获取一个虚拟资源分量,得到待分配至第二账户的虚拟资源,并将待分配至第二账户的虚拟资源,从而提高了在虚拟资源获取阶段中虚拟资源处理的速度,还提高了虚拟资源处理的实用性。
在一实施例中,建立在图10所示装置的基础上,如图11所示,所述指定缓存包括redis缓存,所述redis缓存是以redis列表这一数据结构来存储各个所述虚拟资源分量;所述获取单元102可以包括:获取子单元111。
获取子单元111,被配置为从所述redis列表中随机获取一个虚拟资源分量,得到待分配至所述第二账户的虚拟资源。
在一实施例中,建立在图11所示装置的基础上,如图12所示,所述获取子单元111可以包括:弹出模块121。
弹出模块121,被配置为从所述redis列表中的头部或尾部弹出第一个虚拟资源分量。
由上述实施例可见,在根据第二账户的虚拟资源获取指令从指定缓存中获取一个虚拟资源分量时,可以直接从从redis列表中随机获取一个虚拟资源分量,得到待分配至第二账户的虚拟资源,比如:从redis列表中的头部或尾部弹出第一个虚拟资源分量,由于redis作为高效的缓存工具、同时支持redis列表这种数据结构,从而极大的加快了虚拟资源获取的处理速度,还提高了虚拟资源处理的可靠性。
在一实施例中,建立在图10所示装置的基础上,如图12所示,该虚拟资源处理装置还可以包括:第三存储单元121。
第三存储单元121,被配置为通过异步线程待分配至所述第二账户的虚拟资源写入与所述第二账户相关的数据库中。
由上述实施例可见,在虚拟资源获取(例如,抢红包)的同时,还可以通过异步线程将待分配至第二账户的虚拟资源写入数据库中,这样使得写入数据库的操作不影响其他账户获取虚拟资源(例如,抢红包),从而保证了在虚拟资源获取阶段中虚拟资源处理的较快速度,极大地满足了用户在虚拟资源处理速度上的较高要求。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
本公开还提供了一种虚拟资源处理装置,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如图1至图6任一所述的虚拟资源处理方法。
本公开还提供了一种存储介质,当所述存储介质中的指令由内存插法的检测装置的处理器执行时,使得内存插法的检测装置能够执行如图1至图6任一所述的虚拟资源处理方法。
图13是根据一示例性实施例示出的一种用于虚拟资源处理装置1300的一结构示意图。参照图13,装置1300包括处理组件1322,其进一步包括一个或多个处理器,以及由1316所代表的存储器资源,用于存储可由处理组件1322的执行的指令,例如应用程序。1316中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1322被配置为执行指令,以执行如图1至图4任一所述的内存插法的检测方法。
装置1300还可以包括一个电源组件1326被配置为执行装置1300的电源管理,一个有线或无线网络接口1350被配置为将装置1300连接到网络,和一个输入输出(I/O)接口1358。装置1300可以操作基于存储在存储器1316的操作系统,例如Windows ServerTM,MacOS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
在示例性实施例中,还提供了一种包括指令的存储介质,例如包括指令的存储器1316,上述指令可由装置1300的处理组件1322中的处理器执行以如图1至图6任一所述的内存插法的检测方法。可选地,存储介质可以是非临时性计算机可读存储介质,例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (10)
1.一种虚拟资源处理方法,其特征在于,所述方法用于服务器,包括:
接收第一账户发送的虚拟资源分配指令,所述虚拟资源分配指令中包括待分配的虚拟资源总量、以及待分配的账户数量;
根据所述虚拟资源分配指令将所述虚拟资源总量写入数据库中;
生成第一数量个虚拟资源分量,并将各个所述虚拟资源分量写入指定缓存中;其中,所述第一数量与所述账户数量相同,各个所述虚拟资源分量之和与所述虚拟资源总量相同,所述指定缓存用于在虚拟资源获取过程中提供所述虚拟资源分量;
向所述第一账户发送虚拟资源分配成功指令。
2.根据权利要求1所述的虚拟资源处理方法,其特征在于,所述指定缓存包括redis缓存,所述redis缓存是以redis列表这一数据结构来存储各个所述虚拟资源分量;
所述将各个所述虚拟资源分量写入指定缓存中,包括:
将各个所述虚拟资源分量随机写入所述redis列表中,得到一个随机数值的虚拟资源分量队列。
3.根据权利要求2所述的虚拟资源处理方法,其特征在于,所述将各个所述虚拟资源分量随机写入所述redis列表中,包括:
在所述redis列表的头部或尾部随机压入各个所述虚拟资源分量。
4.根据权利要求1所述的虚拟资源处理方法,其特征在于,还包括:
接收第二账户发送的虚拟资源获取指令;
根据所述虚拟资源获取指令从所述指定缓存中获取一个虚拟资源分量,得到待分配至所述第二账户的虚拟资源;
将待分配至所述第二账户的虚拟资源发送至所述第二账户。
5.根据权利要求4所述的虚拟资源处理方法,其特征在于,所述指定缓存包括redis缓存,所述redis缓存是以redis列表这一数据结构来存储各个所述虚拟资源分量;
所述根据所述虚拟资源获取指令从所述指定缓存中获取一个虚拟资源分量,得到待分配至所述第二账户的虚拟资源,包括:
从所述redis列表中随机获取一个虚拟资源分量,得到待分配至所述第二账户的虚拟资源。
6.根据权利要求5所述的虚拟资源处理方法,其特征在于,所述从所述redis列表中随机获取一个虚拟资源分量,包括;
从所述redis列表中的头部或尾部弹出第一个虚拟资源分量。
7.根据权利要求4所述的虚拟资源处理方法,其特征在于,还包括:
通过异步线程将待分配至所述第二账户的虚拟资源写入与所述第二账户相关的数据库中。
8.一种虚拟资源处理装置,其特征在于,所述装置用于服务器,包括:
第一接收单元,被配置为接收第一账户发送的虚拟资源分配指令,所述虚拟资源分配指令中包括待分配的虚拟资源总量、以及待分配的账户数量;
第一存储单元,被配置为根据所述虚拟资源分配指令将所述虚拟资源总量写入数据库中;
第二存储单元,被配置为生成第一数量个虚拟资源分量,并将各个所述虚拟资源分量写入指定缓存中;其中,所述第一数量与所述账户数量相同,各个所述虚拟资源分量之和与所述虚拟资源总量相同,所述指定缓存用于在虚拟资源获取过程中提供所述虚拟资源分量;
第一发送单元,被配置为向所述第一账户发送虚拟资源分配成功指令。
9.一种虚拟资源处理装置,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求1至7中任一项所述的虚拟资源处理方法。
10.一种存储介质,当所述存储介质中的指令由虚拟资源处理装置的处理器执行时,使得虚拟资源处理装置能够执行如权利要求1至7中任一项所述的虚拟资源处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910866400.3A CN110704485A (zh) | 2019-09-12 | 2019-09-12 | 虚拟资源处理方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910866400.3A CN110704485A (zh) | 2019-09-12 | 2019-09-12 | 虚拟资源处理方法、装置及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110704485A true CN110704485A (zh) | 2020-01-17 |
Family
ID=69195553
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910866400.3A Pending CN110704485A (zh) | 2019-09-12 | 2019-09-12 | 虚拟资源处理方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110704485A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111427691A (zh) * | 2020-03-26 | 2020-07-17 | 京东数字科技控股有限公司 | 虚拟资源分配方法、装置、介质及电子设备 |
CN111625353A (zh) * | 2020-05-18 | 2020-09-04 | 北京达佳互联信息技术有限公司 | 虚拟资源分发处理方法、装置、服务器及存储介质 |
CN112101720A (zh) * | 2020-08-10 | 2020-12-18 | 北京思特奇信息技术股份有限公司 | 一种集团资源分配的方法和系统 |
CN112561567A (zh) * | 2020-12-03 | 2021-03-26 | 星宏传媒有限公司 | 一种电子红包领取请求的异步处理方法、系统及设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106250547A (zh) * | 2016-08-12 | 2016-12-21 | 福建中金在线信息科技有限公司 | 一种控制红包的方法以及系统 |
CN107172496A (zh) * | 2017-04-11 | 2017-09-15 | 广州华多网络科技有限公司 | 一种直播间的虚拟资源发送方法和装置 |
CN107330680A (zh) * | 2017-06-22 | 2017-11-07 | 福建中金在线信息科技有限公司 | 红包控制方法、装置、计算机设备及计算机可读存储介质 |
CN107451853A (zh) * | 2017-07-06 | 2017-12-08 | 广州唯品会网络技术有限公司 | 一种红包实时派发的方法、装置、系统及存储介质 |
CN108270773A (zh) * | 2017-12-22 | 2018-07-10 | 杭州顺网珑腾信息技术有限公司 | 一种用于实现电子红包发放的处理系统 |
-
2019
- 2019-09-12 CN CN201910866400.3A patent/CN110704485A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106250547A (zh) * | 2016-08-12 | 2016-12-21 | 福建中金在线信息科技有限公司 | 一种控制红包的方法以及系统 |
CN107172496A (zh) * | 2017-04-11 | 2017-09-15 | 广州华多网络科技有限公司 | 一种直播间的虚拟资源发送方法和装置 |
CN107330680A (zh) * | 2017-06-22 | 2017-11-07 | 福建中金在线信息科技有限公司 | 红包控制方法、装置、计算机设备及计算机可读存储介质 |
CN107451853A (zh) * | 2017-07-06 | 2017-12-08 | 广州唯品会网络技术有限公司 | 一种红包实时派发的方法、装置、系统及存储介质 |
CN108270773A (zh) * | 2017-12-22 | 2018-07-10 | 杭州顺网珑腾信息技术有限公司 | 一种用于实现电子红包发放的处理系统 |
Non-Patent Citations (1)
Title |
---|
徐竟州: "基于Redis的高并发抢红包应用的设计与实现", 《中国优秀博硕士学位论文全文数据库(硕士) 信息科技辑》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111427691A (zh) * | 2020-03-26 | 2020-07-17 | 京东数字科技控股有限公司 | 虚拟资源分配方法、装置、介质及电子设备 |
CN111625353A (zh) * | 2020-05-18 | 2020-09-04 | 北京达佳互联信息技术有限公司 | 虚拟资源分发处理方法、装置、服务器及存储介质 |
CN111625353B (zh) * | 2020-05-18 | 2024-03-12 | 北京达佳互联信息技术有限公司 | 虚拟资源分发处理方法、装置、服务器及存储介质 |
CN112101720A (zh) * | 2020-08-10 | 2020-12-18 | 北京思特奇信息技术股份有限公司 | 一种集团资源分配的方法和系统 |
CN112101720B (zh) * | 2020-08-10 | 2024-04-02 | 北京思特奇信息技术股份有限公司 | 一种集团资源分配的方法和系统 |
CN112561567A (zh) * | 2020-12-03 | 2021-03-26 | 星宏传媒有限公司 | 一种电子红包领取请求的异步处理方法、系统及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110704485A (zh) | 虚拟资源处理方法、装置及存储介质 | |
KR101171501B1 (ko) | 트랜잭션 프로세싱 쓰루풋을 증가시키기 위한 트랜잭션 취합 | |
Joulani et al. | Online learning under delayed feedback | |
US8122292B2 (en) | Debugging of business flows deployed in production servers | |
CN106020948B (zh) | 一种流程调度方法及装置 | |
CN104391954B (zh) | 数据库日志的处理方法及装置 | |
CN110162413B (zh) | 事件驱动方法及装置 | |
CN102932472B (zh) | 一种数据处理方法以及通信系统 | |
JPH11259443A (ja) | クライアント要求をスケジュ―ルしディスパッチする装置及び方法 | |
CN110728455B (zh) | 业务处理方法、业务处理装置、存储介质与电子设备 | |
CN107729135B (zh) | 按序进行并行数据处理的方法和装置 | |
CN112051993A (zh) | 状态机模板的生成及任务处理方法、装置、介质及设备 | |
US11321090B2 (en) | Serializing and/or deserializing programs with serializable state | |
CN108234594A (zh) | 文件存储方法和装置、电子设备、程序和介质 | |
CN104753909A (zh) | 信息更新后的鉴权方法、装置及系统 | |
CN105302907A (zh) | 一种请求的处理方法及装置 | |
CN108765134B (zh) | 订单数据处理方法及装置、电子设备、存储介质 | |
Zhong et al. | Speeding up Paulson’s procedure for large-scale problems using parallel computing | |
CN111339743B (zh) | 一种账号生成的方法和装置 | |
CN108628677A (zh) | 分布式任务处理系统、方法和装置 | |
US9473561B2 (en) | Data transmission for transaction processing in a networked environment | |
CN117271014A (zh) | 基于web worker的数据处理方法和客户端 | |
CN112308573A (zh) | 智能客服方法及装置、存储介质、计算机设备 | |
CN112748855B (zh) | 处理高并发数据请求的方法和装置 | |
CN115905151A (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200117 |
|
RJ01 | Rejection of invention patent application after publication |