基于缓存的库存管理方法以及装置
技术领域
本申请涉及数据处理技术领域,特别涉及一种基于缓存的库存管理方法。本申请同时涉及一种基于缓存的库存管理装置,一种计算设备,以及一种计算机可读存储介质。
背景技术
随着互联网业务的不断发展,通过互联网在电商平台购物的人群不断增加,当电商平台举办限时抢购活动时,某些单价比平时更给力、更具吸引力的热卖商品会引发大量用户参与抢购,这必然会产生大量针对数据库中热卖商品的库存的并发更新操作,对数据库的性能压力非常大。
目前,有不少通过提升数据库性能的方式来应对热卖商品的库存的高并发更新操作,例如:使用多台数据库分担这些更新操作,增加数据库硬件性能等方法来减轻数据库的压力。
然而对数据库进行读写的速度本身存在瓶颈,更何况是在大量用户同时对数据库的同一条数据进行读写的情况下,会造成库存更新缓慢,用户等待等不好的影响,并且有可能出现超卖的现象,非常不利于业务的发展。
发明内容
有鉴于此,本申请提供了一种基于缓存的库存管理方法。本申请同时涉及一种基于缓存的库存管理装置,一种计算设备,以及一种计算机可读存储介质,以解决现有技术中存在的技术缺陷。
根据本申请实施例的第一方面,提供了一种基于缓存的库存管理方法,包括:
获取热点商品的库存扣减请求中携带的所述热点商品的库存扣减数量;
根据所述库存扣减数量,通过对缓存中所述热点商品的缓存库存进行加锁的方式对所述缓存库存进行扣减;
在扣减成功的情况下,在数据库中插入所述热点商品的库存扣减记录;
对扣减周期内插入的库存扣减记录中包含的所述热点商品的库存扣减数量进行合并,获得所述热点商品的库存扣减总数量;
根据所述库存扣减总数量,对所述数据库中所述热点商品的库存进行扣减。
可选的,所述获取热点商品的库存扣减请求中携带的所述热点商品的库存扣减数量步骤执行之前,还包括:
获取针对商品的库存进行扣减的库存扣减请求;
判断所述商品在所述数据库中的热点状态字段记录的热点状态信息是否为热点开启状态;
若是,将所述商品作为热点商品,并执行所述获取热点商品的库存扣减请求中携带的所述热点商品的库存扣减数量步骤;
若否,判断预设时间区间内针对所述商品的库存进行扣减的库存扣减请求的请求数目是否大于库存请求阈值;
若大于,将所述商品确定为热点商品;
若不大于,将所述商品确定为非热点商品。
可选的,所述将所述商品确定为热点商品步骤执行之后,还包括:
将所述热点商品在数据库中的热点状态字段记录的热点状态信息更新为热点开启状态;
将所述热点商品的库存更新至所述缓存。
可选的,所述将所述商品确定为非热点商品步骤执行之后,还包括:
获取所述非热点商品的库存扣减请求中携带的所述非热点商品的库存扣减数量;
根据所述库存扣减数量,对所述数据库中所述非热点商品的库存进行扣减。
可选的,所述获取热点商品的库存扣减请求中携带的所述热点商品的库存扣减数量步骤执行之后,所述根据所述库存扣减数量,通过对缓存中所述热点商品的缓存库存进行加锁的方式对所述缓存库存进行扣减步骤执行之前,还包括:
判断所述库存扣减数量是否小于所述缓存中所述热点商品的缓存库存数量;
若是,执行所述根据所述库存扣减数量,通过对缓存中所述热点商品的缓存库存进行加锁的方式对所述缓存库存进行扣减步骤;
若否,输出扣减失败的提示。
可选的,所述对扣减周期内插入的库存扣减记录中包含的所述热点商品的库存扣减数量进行合并,获得所述热点商品的库存扣减总数量步骤执行之后,所述根据所述库存扣减总数量,对所述数据库中所述热点商品的库存进行扣减步骤执行之前,还包括:
判断所述库存扣减总数量是否小于所述数据库中所述热点商品的库存数量;
若是,执行所述根据所述库存扣减总数量,对所述数据库中所述热点商品的库存进行扣减步骤;
若否,输出扣减失败的提示。
可选的,所述库存扣减请求的请求状态包括下述至少一项:
待扣减状态、已完成缓存扣减状态、已完成记录插入状态、扣减成功状态、扣减中止状态。
可选的,所述在数据库中插入所述热点商品的库存扣减记录,包括:
将所述请求状态从所述待扣减状态更新为所述已完成缓存扣减状态;
在所述数据库中插入所述热点商品的库存扣减记录;
将所述请求状态从所述已完成缓存扣减状态更新为所述已完成记录插入状态。
可选的,所述根据所述库存扣减总数量,对数据库中所述热点商品的库存进行扣减步骤执行之后,还包括:
在扣减成功的情况下,将所述请求状态更新为所述扣减成功状态;
在扣减失败的情况下,将所述请求状态更新为所述扣减中止状态,并输出扣减失败的提示。
可选的,所述根据所述库存扣减总数量,对数据库中所述热点商品的库存进行扣减步骤执行之后,还包括:
在所述缓存中设置所述热点商品的缓存库存数量为0;
将所述热点商品对应的库存扣减记录中包含的所述热点商品的剩余库存扣减数量进行合并,获得所述热点商品的剩余库存扣减总数量;
根据所述剩余库存扣减总数量,对所述数据库中所述热点商品的库存进行扣减;
将所述热点商品在所述数据库中的热点状态字段记录的热点状态信息从热点开启状态更新为热点关闭状态;
在所述缓存中清除所述热点商品的库存。
根据本申请实施例的第二方面,提供了一种基于缓存的库存管理装置,包括:
获取扣减数量模块,被配置为获取热点商品的库存扣减请求中携带的所述热点商品的库存扣减数量;
缓存扣减模块,被配置为根据所述库存扣减数量,通过对缓存中所述热点商品的缓存库存进行加锁的方式对所述缓存库存进行扣减;
插入记录模块,被配置为在扣减成功的情况下,在数据库中插入所述热点商品的库存扣减记录;
获得扣减总数量模块,被配置为对扣减周期内插入的库存扣减记录中包含的所述热点商品的库存扣减数量进行合并,获得所述热点商品的库存扣减总数量;
数据库扣减模块,被配置为根据所述库存扣减总数量,对所述数据库中所述热点商品的库存进行扣减。
根据本申请实施例的第三方面,提供了一种计算设备,包括:
存储器和处理器;
所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令:
获取热点商品的库存扣减请求中携带的所述热点商品的库存扣减数量;
根据所述库存扣减数量,通过对缓存中所述热点商品的缓存库存进行加锁的方式对所述缓存库存进行扣减;
在扣减成功的情况下,在数据库中插入所述热点商品的库存扣减记录;
对扣减周期内插入的库存扣减记录中包含的所述热点商品的库存扣减数量进行合并,获得所述热点商品的库存扣减总数量;
根据所述库存扣减总数量,对所述数据库中所述热点商品的库存进行扣减。
根据本申请实施例的第四方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,该指令被处理器执行时实现任意一项所述基于缓存的库存管理方法的步骤。
与现有技术相比,本申请具有如下优点:
本申请提供一种基于缓存的库存管理方法,包括:获取热点商品的库存扣减请求中携带的所述热点商品的库存扣减数量;根据所述库存扣减数量,通过对缓存中所述热点商品的缓存库存进行加锁的方式对所述缓存库存进行扣减;在扣减成功的情况下,在数据库中插入所述热点商品的库存扣减记录;对扣减周期内插入的库存扣减记录中包含的所述热点商品的库存扣减数量进行合并,获得所述热点商品的库存扣减总数量;根据所述库存扣减总数量,对所述数据库中所述热点商品的库存进行扣减。
本申请提供的基于缓存的库存管理方法,通过将热点商品的库存存储于缓存,将对数据库中热点商品的库存的高频扣减操作转化为优先对缓存中热点商品的缓存库存进行扣减,以及对数据库插入库存扣减记录的操作,避免了对数据库中热点商品的库存频繁操作的问题,提升了对热点商品库存的扣减效率,并通过加锁的方式对缓存中热点商品的缓存库存进行扣减,避免有多个扣减请求同时对缓存库存进行扣减。
附图说明
图1是本申请实施例提供的一种基于缓存的库存管理方法的流程图;
图2是本申请实施例提供的一种应用于电商平台的基于缓存的库存管理方法的处理流程图;
图3是本申请实施例提供的一种基于缓存的库存管理装置的结构示意图;
图4是本申请实施例提供的一种计算设备的结构框图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
在本申请一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请一个或多个实施例。在本申请一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本申请一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
首先,对本发明一个或多个实施例涉及的名词术语进行解释。
分布式缓存:分布式缓存由一个服务端实现管理和控制,有多个客户端节点存储数据,可以进一步提高数据的读取速率。
事务:是指访问并可能更新数据库中各种数据项的一个程序执行单元。
回滚:泛指程序更新失败,返回上一次正确状态的行为。
异步:异步处理不用阻塞当前线程来等待处理完成,而是允许后续操作,直至其它线程将处理完成,并回调通知此线程。
乐观锁:读取出数据时,将此版本号一同读出,之后更新时,对此版本号加一。此时,将提交数据的版本数据与数据库表对应记录的当前版本信息进行比对,如果提交的数据版本号大于数据库表当前版本号,则予以更新,否则认为是过期数据。
在本申请中,提供了一种基于缓存的库存管理方法,本申请同时涉及一种基于缓存的库存管理装置,一种计算设备,以及一种计算机可读存储介质,在下面的实施例中逐一进行详细说明。
本申请提供的一种基于缓存的库存管理方法实施例如下:
图1示出了根据本申请实施例的一种基于缓存的库存管理方法的流程图,包括步骤S102至步骤S110。
步骤S102,获取热点商品的库存扣减请求中携带的所述热点商品的库存扣减数量。
本申请实施例所述热点商品,是指需要对商品的库存进行频繁增加或扣减操作的商品,此热点商品可以是电商平台中热卖的商品,票务系统中的需要抢购的票务商品等,本申请实施例以电商平台中热卖的商品为例进行说明,票务系统中的需要抢购的票务商品的具体实现与电商平台中热卖的商品的具体实现类似,参照电商平台中热卖的商品的具体实现即可,在此不再赘述。
具体的,这些热点商品可能是手机A,化妆品B、衣服C等,比如在某电商平台中最热卖的有3个商品,分别是手机A、化妆品B和衣服C,由于这3个商品的库存消耗非常大,对应的,这些商品的生产量也会很大,则为了满足客户的需求,需要对这3个商品的库存进行频繁增加或扣减操作,这3个商品就可以认为是热点商品。
相应的,热点商品的库存是指实际储存的热点商品,此库存以库存数量的形式存储于数据库中,比如在电商平台中,热点商品的库存以热点商品的标识和热点商品的库存数量的形式存储于电商平台后台对应的数据库中。
所述库存扣减请求,是指热点商品的库存进行扣减的请求;具体的,根据不同商品的类型,有针对热点商品的库存进行扣减的请求,有针对非热点商品的库存进行扣减的请求;
所述库存扣减请求中携带对所述商品的库存进行扣减的库存扣减数量,针对热点商品的库存进行扣减的请求携带对热点商品的库存进行扣减的库存扣减数量,针对非热点商品的库存进行扣减的请求携带对非热点商品的库存进行扣减的库存扣减数量。比如在某电商平台中手机A是热点商品,则手机A的库存扣减请求,是指用户对手机A进行下单的下单请求,此下单请求中携带对手机A的下单数量。
除上述对热点商品和非热点商品的库存进行扣减的库存扣减请求之外,实际场景中,还会出现对热点商品和非热点商品的库存进行增加的库存增加请求。
相应的,库存增加请求是指针对商品的库存进行增加的请求;具体的,有针对热点商品的库存进行增加的请求,有针对非热点商品的库存进行增加的请求;在本申请实施例中只涉及针对热点商品的库存进行增加的请求,此库存增加请求携带对热点商品的库存进行增加的期望库存增加数量。
实际应用中,库存扣减请求有多种请求状态,可选的,所述库存扣减请求的请求状态包括下述至少一项:
待扣减状态、已完成缓存扣减状态、已完成记录插入状态、扣减成功状态、扣减中止状态。
所述请求状态是指针对热点商品的库存扣减请求在不同阶段对应的请求状态,库存扣减请求的初始状态为待扣减状态;在对该库存扣减请求在缓存中完成扣减之后,将该库存扣减请求的请求状态从待扣减状态更新为已完成缓存扣减状态;在数据库中插入库存扣减记录后,将该库存扣减请求的请求状态从已完成缓存扣减状态更新为已完成记录插入状态;在对数据库完成扣减后,将该库存扣减请求的请求状态从已完成记录插入状态更新为扣减成功状态;以上步骤若出现失败或太长时间未完成,将该库存扣减请求的请求状态更新为扣减中止状态。
上述库存扣减请求可以以事务的方式进行实现,以事务的方式具体实现时,库存扣减请求的请求状态可以对应事务的状态,在此不再赘述。
具体实施时,获取热点商品的库存扣减请求之前,需要确定此商品是否为热点商品,本申请实施例提供的一种可选实施方式中,所述获取热点商品的库存扣减请求中携带的所述热点商品的库存扣减数量步骤执行之前,还包括:
获取针对商品的库存进行扣减的库存扣减请求;
判断所述商品在所述数据库中的热点状态字段记录的热点状态信息是否为热点开启状态;
若是,表明所述商品在数据库中已经被标记为热点商品,将所述商品作为热点商品,并执行上述步骤S102,获取热点商品的库存扣减请求中携带的所述热点商品的库存扣减数量;
若否,表明所述商品在数据库中没有被标记为热点商品,判断预设时间区间内针对所述商品的库存进行扣减的库存扣减请求的请求数目是否大于库存请求阈值;
若大于,表明对所述商品的库存扣减操作非常频繁,所述商品符合作为热点商品的条件,将所述商品确定为热点商品;
若不大于,表明对所述商品的库存扣减操作不够频繁,所述商品不符合作为热点商品的条件,将所述商品确定为非热点商品。
本申请实施例所述热点状态字段,是指在数据库中存储热点状态信息的一个字段;所述热点状态信息是指对商品进行标识是否开启热点状态的一个状态信息,此热点状态信息一般包含两种状态,一个为热点开启状态,一个为热点关闭状态。
具体实施时,判断某商品是否热点商品还是非热点商品,需要判断商品在数据库中热点状态字段记录的热点状态信息是否为热点开启状态,比如在上述电商平台中化妆品B为热点商品且已经开启热点状态,化妆品B2为非热点商品,则在该电商平台后台对应的数据库中,化妆品B在数据库中的热点状态字段记录的热点状态信息为热点开启状态,化妆品B2在数据库中的热点状态字段记录的热点状态信息为热点关闭状态。
所述库存请求阈值,是指在获取库存扣减请求之前的预设时间区间内对某商品的库存扣减请求的请求数目的一个阈值,若在获取库存扣减请求之前的一段时间内对某商品的库存扣减请求的请求数目大于此阈值,则将此商品确认为热点商品;若在获取库存扣减请求之前的一段时间内对某商品的库存扣减请求的请求数目不大于此阈值,则将此商品确认为非热点商品,比如,预设时间区间为1秒,且1秒内的库存请求阈值为100,在电商平台中有化妆品B2和衣服C,在获取对化妆品B2的库存扣减请求前1秒内对化妆品B2下单的下单请求的数目有5个,在获取对衣服C的库存扣减请求前1秒内对衣服C下单的下单请求的数目有120个,则对衣服C的库存扣减请求的请求数目大于库存请求阈值100,对化妆品B2的库存扣减请求的请求数目不大于库存请求阈值100,则将衣服C确认为热点商品,将化妆品B2确认为非热点商品。
本申请实施例以在电商平台对化妆品B、化妆品B2和衣服C的下单为例,获取到对化妆品B、化妆品B2和衣服C的下单请求,其中,化妆品B在数据库中的热点状态字段记录的热点状态信息为热点开启状态,化妆品B2和衣服C在数据库中的热点状态字段记录的热点状态信息为热点关闭状态,则表明化妆品B在数据库中已经被标记为热点商品,将化妆品B作为热点商品,执行上述步骤S102,获取热点商品的库存扣减请求中携带的所述热点商品的库存扣减数量;也表明化妆品B2和衣服C在数据库中没有被标记为热点商品;
接下来,判断在1秒内对化妆品B2和衣服C的库存扣减请求的请求数目是否大于库存请求阈值30,其中,在获取对化妆品B2的库存扣减请求前1秒内对化妆品B2下单的下单请求的数目有5个,在获取对衣服C的库存扣减请求前1秒内对衣服C下单的下单请求的数目有40个,则对衣服C的库存扣减请求的请求数目大于库存请求阈值30,表明对衣服C的库存扣减操作非常频繁,衣服C符合作为热点商品的条件,将服C确认为热点商品;对化妆品B2的库存扣减请求的请求数目不大于库存请求阈值30,表明对化妆品B2的库存扣减操作不够频繁,化妆品B2不符合作为热点商品的条件,将化妆品B2确认为非热点商品。
本申请实施例,通过对商品是否为热点商品进行识别,以便于针对不同类型商品,执行不同方式的库存扣减操作。
在将所述商品确定为热点商品的基础上,本申请实施例提供的一种可选实施方式中,所述将所述商品确定为热点商品步骤执行之后,还包括:
1)将所述热点商品在数据库中的热点状态字段记录的热点状态信息更新为热点开启状态;
2)将所述热点商品的库存更新至所述缓存。
实际应用中,将商品中确定为热点商品之后,需要通过将此商品在数据库中的热点状态字段记录的热点状态信息更新为热点开启状态的方式,将此商品标记为热点商品,并将此商品的库存更新至缓存。
以上述在电商平台对衣服C下单为例,衣服C在数据库中热点状态字段记录的热点状态信息为热点关闭状态,其在数据库中的库存数量为3000,在衣服C被确认为热点商品后,首先,将衣服C在数据中热点状态字段记录的热点状态信息更新为热点开启状态;其次,将衣服C在数据库中的库存数量3000更新至缓存,更新后,在缓存中衣服C的库存数量为3000。
具体实施时,缓存的类型可以是多种多样,包含服务器本地缓存,分布式缓存等,在此不做赘述。
本申请实施例,将确定为热点商品的商品开启热点状态,将其标记成为热点商品,并将其库存更新至缓存进行存储,提高了对热点商品的库存进行扣减的效率。
在将所述商品确定为非热点商品的基础上,本申请实施例提供的一种可选实施方式中,所述将所述商品确定为非热点商品步骤执行之后,还包括:
1)获取所述非热点商品的库存扣减请求中携带的所述非热点商品的库存扣减数量;
2)根据所述库存扣减数量,对所述数据库中所述非热点商品的库存进行扣减。
以上述在电商平台中对化妆品B2下单为例,化妆品B2被确认为非热点商品,对化妆品B2的下单请求中携带的对化妆品B2的下单数量为20,在数据库中化妆品B2的库存数量为1000,根据下单数量在数据库中对化妆品B2的库存进行扣减,扣减后,化妆品B2在数据库中的库存数量为1000-20=980。
本申请实施例,针对确定为非热点商品的商品,直接在数据库对其库存进行扣减,因非热点商品在总体商品中的比例很大,然而对同一个非热点商品的库存操作的并发量不大,不容易出现等待延迟的现象,可直接在数据库对其库存进行操作,避免了增加缓存的性能压力。
步骤S104,根据所述库存扣减数量,通过对缓存中所述热点商品的缓存库存进行加锁的方式对所述缓存库存进行扣减。
本申请实施例所述加锁,是指对缓存中热点商品的缓存库存加锁,当对此缓存库存加锁后,同一时间只能有一个对此热点商品的缓存库存进行更新操作。
具体实施时,锁的类型可以是多种多样的,比如:版本乐观锁,库存乐观锁等,本申请实施例以版本乐观锁为例进行说明,其他类型的锁的具体实现与版本乐观锁的具体实现类似,参照版本乐观锁的具体实现即可,在此不再赘述。
具体的,通过对缓存中所述热点商品的缓存库存进行加锁的方式对所述缓存库存进行扣减;
在扣减成功的情况下,执行下述步骤S106,在数据库中插入所述热点商品的库存扣减记录的步骤;
在扣减失败的情况下,输出扣减失败的提示。
以上述在电商平台中对衣服C下单为例,在缓存中衣服C缓存库存数量为3000,获取对衣服C的下单请求中携带的对衣服C的下单数量为2之后,查询到缓存中衣服C的缓存库存记录对应的版本号为56,在此版本号的基础上对衣服C的缓存库存进行扣减,并对此版本号加一,在扣减成功的情况下,衣服C的缓存库存数量为3000-2=2998,版本号变更为57,并执行下述步骤S106,在数据库中插入所述热点商品的库存扣减记录的步骤;在扣减失败的情况下,输出扣减失败的提示。
具体实施时,在通过加锁的方式对所述缓存库存进行扣减之前,还需要判断热点商品的缓存库存数量是否能满足上述获取的热点商品的库存扣减请求中携带的热点商品的库存扣减数量,本申请实施例提供的一种可选实施方式中,所述获取热点商品的库存扣减请求中携带的所述热点商品的库存扣减数量步骤执行之后,所述根据所述库存扣减数量,通过对缓存中所述热点商品的缓存库存进行加锁的方式对所述缓存库存进行扣减步骤执行之前,还包括:
判断所述库存扣减数量是否小于所述缓存中所述热点商品的缓存库存数量;
若是,表明所述热点商品的缓存库存数量是充足的,执行下述步骤S104,根据所述库存扣减数量,通过对缓存中所述热点商品的缓存库存进行加锁的方式对所述缓存库存进行扣减;
若否,表明所述热点商品的缓存库存数量是不足的,输出扣减失败的提示。
所述缓存库存,是指在缓存中存储的热点商品的库存,相应的,所述缓存库存数量,是指在缓存中存储的热点商品的库存数量。
以上述在电商平台对衣服C下单为例,在缓存中衣服C缓存库存数量为3000,对衣服C的下单请求中携带的对衣服C的下单数量为2,此下单数量小于缓存中衣服C的缓存库存数量,表明衣服C的缓存库存数量是充足的,执行下述步骤S104,根据所述库存扣减数量,通过对缓存中所述热点商品的缓存库存进行加锁的方式对所述缓存库存进行扣减;
假设,对上述衣服C的下单请求中携带的对衣服C的下单数量为3005,此下单数量不小于缓存中衣服C的缓存库存数量3000,表明所述热点商品的缓存库存数量是不足的,输出扣减失败的提示。
本申请实施例,在对缓存中热点商品的缓存库存进行扣减前,对热点商品的缓存库存数量是否满足库存扣减数量先行进行判断,提高了库存扣减的效率。
步骤S106,在扣减成功的情况下,在数据库中插入所述热点商品的库存扣减记录。
所述库存扣减记录,至少包含所述热点商品的标识和对此热点商品的库存扣减数量;此库存扣减数量是指热点商品的库存扣减请求中携带的热点商品的库存扣减数量,也即对缓存中热点商品的缓存库存进行扣减的库存扣减数量。
以上述在电商平台中对衣服C下单为例,根据下单数量2,通过加乐观锁对衣服C的缓存库存进行扣减,在扣减成功的情况下,将衣服C的标识和对衣服C的下单数量插入数据库。
在扣减成功的情况下,本申请实施例提供的一种可选实施方式中,所述在数据库中插入所述热点商品的库存扣减记录,具体采用如下方法实现:
将所述请求状态从所述待扣减状态更新为所述已完成缓存扣减状态;
在所述数据库中插入所述热点商品的库存扣减记录;
将所述请求状态从所述已完成缓存扣减状态更新为所述已完成记录插入状态。
以上述在电商平台中对衣服C下单为例,根据衣服C的下单请求中携带的下单数量2,通过版本加乐观锁对衣服C的缓存库存进行扣减,在扣减成功的情况下,将下单请求的请求状态从待扣减状态更新为已完成缓存扣减状态,将衣服C的标识和对衣服C的下单数量插入数据库,插入完成之后,将下单请求的请求状态从已完成缓存扣减状态更新为已完成记录插入状态。
本申请实施例,在对热点商品的缓存库存扣减成功的情况下,对请求状态进行变更,并对库存扣减数量进行记录,便于对库存扣减的执行过程的管理。
步骤S108,对扣减周期内插入的库存扣减记录中包含的所述热点商品的库存扣减数量进行合并,获得所述热点商品的库存扣减总数量。
所述扣减周期,是指将插入数据库的库存扣减记录中包含的热点商品的库存扣减数量进行合并的周期,也是预设的一个根据库存扣减记录中包含的热点商品的库存的扣减总数量对数据库中热点商品的库存进行扣减的周期。
以上述在电商平台中对衣服C下单为例,插入数据库中的库存扣减记录包含衣服C的库存扣减数量2,预设的扣减周期为5分钟,这5分钟内,除了上述对衣服C的库存扣减数量2的库存扣减记录,还包含其他在这5分钟内插入数据库的库存扣减记录,这些库存扣减记录包含对衣服C的库存扣减数量分别为30,4,1,43,115。将这5分钟内插入数据库的库存扣减记录中包含的衣服C的库存扣减数量进行合并,合并后,获得衣服C的库存扣减总数量为2+30+4+1+43+115=195。
步骤S110,根据所述库存扣减总数量,对所述数据库中所述热点商品的库存进行扣减。
根据上述计算获得的所述库存扣减总数量,对所述数据库中所述热点商品的库存进行扣减,以上述在电商平台中对衣服C下单为例,按照衣服C的库存扣减总数量195,对数据库中衣服C的库存数量3000进行扣减。
具体实施时,在对所述数据库中所述热点商品的库存进行扣减之前,还需要判断在数据库中热点商品的库存是否能够满足上述计算获得的库存扣减总数量,本申请实施例提供的一种可选实施方式中,所述对扣减周期内插入的库存扣减记录中包含的所述热点商品的库存扣减数量进行合并,获得所述热点商品的库存扣减总数量步骤执行之后,所述根据所述库存扣减总数量,对所述数据库中所述热点商品的库存进行扣减步骤执行之前,还包括:
判断所述库存扣减总数量是否小于所述数据库中所述热点商品的库存数量;
若是,表明所述热点商品的库存数量是充足的,执行下述步骤S110,根据所述库存扣减总数量,对所述数据库中所述热点商品的库存进行扣减;
若否,表明所述热点商品的库存数量是不足的,输出扣减失败的提示。
以上述在电商平台中对衣服C下单为例,衣服C的库存扣减总数量为195,而在数据库中衣服C的库存数量为3000,衣服C的库存扣减总数量小于在数据库中衣服C的库存数量,则表明衣服C的库存数量是充足的,执行下述步骤S110,根据所述库存扣减总数量,对所述数据库中所述热点商品的库存进行扣减;
假设,对上述衣服C的库存扣减总数量为3400,而在数据库中衣服C的库存数量为3000,衣服C的库存扣减总数量不小于在数据库中衣服C的库存数量,输出扣减失败的提示。
本申请实施例,在对数据库中热点商品的库存进行扣减前,对热点商品的库存数量是否满足库存扣减总数量先行进行判断,提高了库存扣减的效率。
在对所述数据库中所述热点商品的库存进行扣减的基础上,本申请实施例提供的一种可选实施方式中,所述根据所述库存扣减总数量,对数据库中所述热点商品的库存进行扣减步骤执行之后,针对扣减之后的不同情况执行如下操作:
在扣减成功的情况下,将所述请求状态更新为所述扣减成功状态;
在扣减失败的情况下,将所述请求状态更新为所述扣减中止状态,并输出扣减失败的提示。
以上述在电商平台中对衣服C下单为例,按照衣服C的库存扣减总数量195,对数据库中衣服C的库存数量3000进行扣减,在扣减成功的情况下,将衣服C的库存扣减请求的请求状态从已完成记录插入状态更新为扣减成功状态;在扣减失败的情况下,将衣服C的库存扣减请求的请求状态从已完成记录插入状态更新为扣减中止状态,并输出扣减失败的提示。
本申请实施例,在数据库对热点商品的库存进行扣减后,根据对库存扣减请求的请求状态进行更新,便于对库存扣减请求的执行阶段和状态进行跟踪和了解。
进一步,实际应用中需要对根据库存扣减请求对数据库中所述热点商品的库存进行扣减是否已经完成进行检测,若长时间没有完成,则需要对已经执行的步骤进行回滚,优选采用如下方式实现:
检测在预设时间内所述请求状态是否更新为所述扣减成功状态;
若是,表明根据所述库存扣减请求对热点商品的库存已经扣减完成,不做处理即可;
若否,表明长时间未完成对数据库中所述热点商品的库存进行扣减,根据所述请求状态,将根据所述库存扣减请求对所述热点商品的库存已经执行的步骤进行回滚。
具体实施时,若所述库存扣减请求的请求状态在超出规定时间区间依旧为待扣减状态,表明长时间未完成对热点商品的库存进行扣减,则将所述请求状态更新为扣减中止状态,并返回扣减失败的提示;
若所述库存扣减情求的请求状态在超出规定时间区间依旧为已完成缓存扣减状态,表明长时间未完成对热点商品库存的库存扣减,将所述请求状态更新为扣减中止状态,根据所述库存扣减数量,通过对缓存中所述热点商品的缓存库存进行加锁的方式对所述热点商品扣减后的缓存库存进行增加,并返回扣减失败的提示;
若所述库存扣减情求的请求状态在超出规定时间区间依旧为已完成记录插入状态,表明长时间未完成对热点商品库存的库存扣减,将所述请求状态更新为扣减中止状态,在数据库中将所述库存扣减请求对应的所述热点商品的库存扣减记录进行删除,并根据所述库存扣减数量,通过对缓存中所述热点商品的缓存库存进行加锁的方式对所述热点商品扣减后的缓存库存进行增加,最后返回扣减失败的提示。
以上述在电商平台中对热点商品手机A下单为例,获取对手机A的下单请求,此下单请求中携带的下单数量为20,预设时间是2分钟,检测在从获取对手机A的下单请求开始2分钟内对手机A的下单请求的请求状态有没有被更新为扣减成功状态;
假设手机A的下单请求的请求状态为待扣减状态,将此下单请求的请求状态更新为扣减中止状态,并返回扣减失败的提示;
假设手机A的下单请求的请求状态为已完成缓存扣减状态,将此下单请求的请求状态更新为扣减中止状态,根据下单数量20,并根据下单数量20,通过加锁的方式对手机A的缓存库存增加20,并返回扣减失败的提示;
假设手机A的下单请求的请求状态为已完成记录插入状态,在数据库中将此下单请求对应的手机A的库存扣减记录进行删除,并根据下单数量20,通过加锁的方式对手机A的缓存库存增加20,最后返回扣减失败的提示。
本申请实施例,在对数据库中热点商品的库存进行扣减后,对相应的库存扣减请求的请求状态进行变更并对扣减失败的扣减请求进行回滚,保证了热点商品在缓存和数据库中库存的一致性。
实际应用中,因热点商品不再符合作为热点商品的条件或者因为热点商品的库存的受限等其他因素的考虑,需要关闭此热点商品的热点状态,将热点商品变更为非热点商品,本申请实施例提供的一种可选实施方式中,所述根据所述库存扣减总数量,对数据库中所述热点商品的库存进行扣减步骤执行之后,优选执行如下步骤实现:
在所述缓存中设置所述热点商品的缓存库存数量为0;
将所述热点商品对应的库存扣减记录中包含的所述热点商品的剩余库存扣减数量进行合并,获得所述热点商品的剩余库存扣减总数量;
根据所述剩余库存扣减总数量,对所述数据库中所述热点商品的库存进行扣减;
将所述热点商品在所述数据库中的热点状态字段记录的热点状态信息从热点开启状态更新为热点关闭状态;
在所述缓存中清除所述热点商品的库存。
所述剩余库存扣减数量,是指所有对热点商品的库存扣减请求中已经根据库存扣减请求中携带的热点商品的库存扣减数量在数据库中插入库存扣减记录,但并没有对数据库中的热点商品的库存进行扣减的库存扣减数量。
相应的,剩余库存扣减总数量,是指将热点商品对应的库存扣减记录中包含的热点商品的剩余库存扣减数量进行合并后,获得的热点商品的剩余库存扣减总数量。
以上述对电商平台中化妆品B为例,化妆品B之前为热点商品,在数据库中的库存数量为350,然而对化妆品B还有一些剩余的下单请求,已经根据这些下单请求中的下单数量在缓存中对化妆品B的缓存库存进行了扣减,且扣减成功了,并在数据库插入了库存扣减记录,但没有对数据库中化妆品B的库存进行扣减,要对化妆品B关闭热点状态,则在所述缓存中设置化妆品B的缓存库存数量为0;将在数据库中化妆品B的库存扣减记录包含的化妆品B的下单数量相加,获得化妆品B的剩余库存扣减总数量为130;并根据剩余库存扣减总数量130,对所述数据库中化妆品B的库存进行扣减,扣减后,在数据库中化妆品B的库存数量为350-130=220,然后将化妆品B在数据库中的热点状态字段记录的热点状态信息从热点开启状态更新为热点关闭状态,最后在缓存中清除化妆品B的库存。
本申请实施例,将热点商品关闭热点状态,完成热点商品到非热点商品的转换,使对商品的库存扣减更加灵活。
实际应用中,面临商家对热点商品的库存进行增加的需求,当所述热点商品的生产厂家增加了此热点商品的供货量,相应的,在电商平台的后台也需要对此热点商品的库存进行增加,本申请实施例提供的一种可选实施方式中,针对所述热点商品的库存,通过如下方式进行增加:
获取针对所述热点商品的库存进行增加的库存增加请求;
根据所述库存增加请求中携带的期望库存增加数量,在所述数据库中对所述热点商品的库存进行增加;
将所述热点商品增加后的库存更新至所述缓存。
以在电商平台中对热点商品手机A的库存进行增加为例,增加前,在数据库和缓存中手机A的库存数量都为1500,对手机A的库存增加请求中携带的期望库存增加数量为500,则根据此期望库存增加数量,在数据库中对手机A的库存进行增加,增加后,在数据库中手机A的库存数量为1500+500=2000,在缓存中手机A的库存数量仍为1500,将在数据库中手机A增加后的库存2000更新至缓存,更新后,在缓存中手机A的库存数量变更为2000。
此外,实际应用中,也会面临商家对热点商品的库存进行扣减的需求,当所述热点商品的商家期望预留一部分此热点商品,以备他用,相应的,在电商平台的后台也需要对此热点商品的库存进行扣减,由于此扣减程序执行过程的具体实现方式与在电商平台的前台用户下单的扣减程序执行过程的具体实现方式类似,参照前台用户下单的扣减程序执行过程即可,在此不做赘述。
本申请实施例,通过对热点商品的库存进行增加,保证热点商品的库存充足。
下述结合图2,以本申请提供的基于缓存的库存管理方法在电商平台的应用为例,对所述基于缓存的库存管理方法进行进一步说明,所述基于缓存的库存管理方法具体包括步骤S202至步骤S226。
步骤S202,获取在电商平台中针对商品的库存进行扣减的库存扣减请求。
步骤S204,判断所述商品在数据库中的热点状态字段记录的热点状态信息是否为热点开启状态;
若是,将所述商品作为热点商品,执行下述步骤S212;
若否,执行下述步骤S206。
步骤S206,判断预设时间区间内针对所述商品的库存进行扣减的库存扣减请求的请求数目是否大于库存请求阈值;
若大于,将所述商品确定为热点商品,执行下述步骤S208;
若不大于,将所述商品确定为非热点商品。
步骤S208,将所述热点商品在数据库中的热点状态字段记录的热点状态信息更新为热点开启状态。
步骤S210,将所述热点商品的库存更新至所述缓存。
步骤S212,获取电商平台中热点商品的库存扣减请求中携带的所述热点商品的库存扣减数量。
步骤S214,根据所述库存扣减数量,通过对缓存中所述热点商品的缓存库存进行加锁的方式对所述缓存库存进行扣减。
步骤S216,在扣减成功的情况下,将所述库存扣减请求的请求状态从待扣减状态更新为已完成缓存扣减状态。
所述库存扣减请求的请求状态包括下述至少一项:
待扣减状态、已完成缓存扣减状态、已完成记录插入状态、扣减成功状态、扣减中止状态。
步骤S218,在所述数据库中插入所述热点商品的库存扣减记录。
步骤S220,将所述请求状态从所述已完成缓存扣减状态更新为已完成记录插入状态。
步骤S222,对扣减周期内插入的库存扣减记录中包含的所述热点商品的库存扣减数量进行合并,获得所述热点商品的库存扣减总数量。
步骤S224,根据所述库存扣减总数量,对所述数据库中所述热点商品的库存进行扣减。
步骤S226,在扣减成功的情况下,将所述请求状态更新为扣减成功状态。
综上所述,本申请提供的基于缓存的库存管理方法,通过将热点商品的库存存储于缓存,将对数据库中热点商品的库存的高频扣减操作转化为优先对缓存中热点商品的缓存库存进行扣减,以及对数据库插入库存扣减记录的操作,避免了对数据库中热点商品的库存频繁操作的问题,提升了对热点商品库存的扣减效率,并通过加锁的方式对缓存中热点商品的缓存库存进行扣减,避免有多个扣减请求同时对缓存库存进行扣减。
本申请提供的一种基于缓存的库存管理装置实施例如下:
与上述方法实施例相对应,本申请还提供了基于缓存的库存管理装置实施例,图3示出了本申请实施例的基于缓存的库存管理装置的结构示意图。如图3所示,该装置包括:
获取扣减数量模块302,被配置为获取热点商品的库存扣减请求中携带的所述热点商品的库存扣减数量;
缓存扣减模块304,被配置为根据所述库存扣减数量,通过对缓存中所述热点商品的缓存库存进行加锁的方式对所述缓存库存进行扣减;
插入记录模块306,被配置为在扣减成功的情况下,在数据库中插入所述热点商品的库存扣减记录;
获得扣减总数量模块308,被配置为对扣减周期内插入的库存扣减记录中包含的所述热点商品的库存扣减数量进行合并,获得所述热点商品的库存扣减总数量;
数据库扣减模块310,被配置为根据所述库存扣减总数量,对所述数据库中所述热点商品的库存进行扣减。
可选的,所述基于缓存的库存管理装置,还包括:
获取扣减请求模块,被配置为获取针对商品的库存进行扣减的库存扣减请求;
判断热点开启模块,被配置为判断所述商品在所述数据库中的热点状态字段记录的热点状态信息是否为热点开启状态;
若是,将所述商品作为热点商品,运行所述获取扣减数量模块302;
若否,运行判断阈值模块;所述判断阈值模块,被配置为判断预设时间区间内针对所述商品的库存进行扣减的库存扣减请求的请求数目是否大于库存请求阈值;
若大于,运行确定热点商品模块;所述确定热点商品模块,被配置为将所述商品确定为热点商品;
若不大于,运行确定非热点商品模块;所述确定非热点商品模块,被配置为将所述商品确定为非热点商品。
可选的,所述基于缓存的库存管理装置,还包括:
开启热点状态模块,被配置为将所述热点商品在数据库中的热点状态字段记录的热点状态信息更新为热点开启状态;
更新缓存模块,被配置为将所述热点商品的库存更新至所述缓存。
可选的,所述基于缓存的库存管理装置,还包括:
获取非热点扣减数量模块,被配置为获取所述非热点商品的库存扣减请求中携带的所述非热点商品的库存扣减数量;
非热点扣减模块,被配置为根据所述库存扣减数量,对所述数据库中所述非热点商品的库存进行扣减。
可选的,所述基于缓存的库存管理装置,还包括:
判断缓存库存模块,被配置为判断所述库存扣减数量是否小于所述缓存中所述热点商品的缓存库存数量;
若是,运行所述缓存扣减模块304;
若否,运行第一输出失败提示模块;所述第一输出失败提示模块,被配置为输出扣减失败的提示。
可选的,所述基于缓存的库存管理装置,还包括:
判断库存数量模块,被配置为判断所述库存扣减总数量是否小于所述数据库中所述热点商品的库存数量;
若是,运行所述数据库扣减模块310;
若否,运行第二输出失败提示模块;所述第二输出失败提示模块,被配置为输出扣减失败的提示。
可选的,所述库存扣减请求的请求状态包括下述至少一项:
待扣减状态、已完成缓存扣减状态、已完成记录插入状态、扣减成功状态、扣减中止状态。
可选的,所述插入记录模块306,包括:
更新已完成缓存扣减状态子模块,被配置为将所述请求状态从所述待扣减状态更新为所述已完成缓存扣减状态;
插入记录子模块,被配置为在所述数据库中插入所述热点商品的库存扣减记录;
更新已完成记录插入状态子模块,被配置为将所述请求状态从所述已完成缓存扣减状态更新为所述已完成记录插入状态。
可选的,所述基于缓存的库存管理装置,还包括:
更新扣减成功状态模块,被配置为在扣减成功的情况下,将所述请求状态更新为所述扣减成功状态;
更新扣减中止状态模块,被配置为在扣减失败的情况下,将所述请求状态更新为所述扣减中止状态,并输出扣减失败的提示。
可选的,所述基于缓存的库存管理装置,还包括:
设置缓存模块,被配置为在所述缓存中设置所述热点商品的缓存库存数量为0;
合并剩余扣减数量模块,被配置为将所述热点商品对应的库存扣减记录中包含的所述热点商品的剩余库存扣减数量进行合并,获得所述热点商品的剩余库存扣减总数量;
剩余库存扣减模块,被配置为根据所述剩余库存扣减总数量,对所述数据库中所述热点商品的库存进行扣减;
关闭热点模块,被配置为将所述热点商品在所述数据库中的热点状态字段记录的热点状态信息从热点开启状态更新为热点关闭状态;
清除缓存模块,被配置为在所述缓存中清除所述热点商品的库存。
可选的,所述热点商品的库存,通过运行如下模块进行增加:
获取增加请求模块,被配置为获取针对所述热点商品的库存进行增加的库存增加请求;
库存增加模块,被配置为根据所述库存增加请求中携带的期望库存增加数量,在所述数据库中对所述热点商品的库存进行增加;
增加后更新缓存模块,被配置为将所述热点商品增加后的库存更新至所述缓存。
上述为本实施例的一种基于缓存的库存管理装置的示意性方案。需要说明的是,该基于缓存的库存管理装置的技术方案与上述的基于缓存的库存管理方法的技术方案属于同一构思,基于缓存的库存管理装置的技术方案未详细描述的细节内容,均可以参见上述基于缓存的库存管理方法的技术方案的描述。
本申请提供的一种计算设备实施例如下:
图4示出了根据本申请一实施例的计算设备400的结构框图。该计算设备400的部件包括但不限于存储器410和处理器420。处理器420与存储器410通过总线430相连接,数据库450用于保存数据。
计算设备400还包括接入设备440,接入设备440使得计算设备400能够经由一个或多个网络460通信。这些网络的示例包括公用交换电话网(PSTN)、局域网(LAN)、广域网(WAN)、个域网(PAN)或诸如因特网的通信网络的组合。接入设备440可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE802.11无线局域网(WLAN)无线接口、全球微波互联接入(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。
在本申请的一个实施例中,计算设备400的上述以及图4中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图4所示的计算设备结构框图仅仅是出于示例的目的,而不是对本申请范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
计算设备400可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或PC的静止计算设备。计算设备400还可以是移动式或静止式的服务器。
本申请提供一种计算设备,包括存储器410、处理器420及存储在存储器上并可在处理器上运行的计算机指令,所述处理器420用于执行如下计算机可执行指令:
获取热点商品的库存扣减请求中携带的所述热点商品的库存扣减数量;
根据所述库存扣减数量,通过对缓存中所述热点商品的缓存库存进行加锁的方式对所述缓存库存进行扣减;
在扣减成功的情况下,在数据库中插入所述热点商品的库存扣减记录;
对扣减周期内插入的库存扣减记录中包含的所述热点商品的库存扣减数量进行合并,获得所述热点商品的库存扣减总数量;
根据所述库存扣减总数量,对所述数据库中所述热点商品的库存进行扣减。
可选的,所述获取热点商品的库存扣减请求中携带的所述热点商品的库存扣减数量步骤执行之前,还包括:
获取针对商品的库存进行扣减的库存扣减请求;
判断所述商品在所述数据库中的热点状态字段记录的热点状态信息是否为热点开启状态;
若是,将所述商品作为热点商品,并执行所述获取热点商品的库存扣减请求中携带的所述热点商品的库存扣减数量步骤;
若否,判断预设时间区间内针对所述商品的库存进行扣减的库存扣减请求的请求数目是否大于库存请求阈值;
若大于,将所述商品确定为热点商品;
若不大于,将所述商品确定为非热点商品。
可选的,所述将所述商品确定为热点商品步骤执行之后,还包括:
将所述热点商品在数据库中的热点状态字段记录的热点状态信息更新为热点开启状态;
将所述热点商品的库存更新至所述缓存。
可选的,所述将所述商品确定为非热点商品步骤执行之后,还包括:
获取所述非热点商品的库存扣减请求中携带的所述非热点商品的库存扣减数量;
根据所述库存扣减数量,对所述数据库中所述非热点商品的库存进行扣减。
可选的,所述获取热点商品的库存扣减请求中携带的所述热点商品的库存扣减数量步骤执行之后,所述根据所述库存扣减数量,通过对缓存中所述热点商品的缓存库存进行加锁的方式对所述缓存库存进行扣减步骤执行之前,还包括:
判断所述库存扣减数量是否小于所述缓存中所述热点商品的缓存库存数量;
若是,执行所述根据所述库存扣减数量,通过对缓存中所述热点商品的缓存库存进行加锁的方式对所述缓存库存进行扣减步骤;
若否,输出扣减失败的提示。
可选的,所述对扣减周期内插入的库存扣减记录中包含的所述热点商品的库存扣减数量进行合并,获得所述热点商品的库存扣减总数量步骤执行之后,所述根据所述库存扣减总数量,对所述数据库中所述热点商品的库存进行扣减步骤执行之前,还包括:
判断所述库存扣减总数量是否小于所述数据库中所述热点商品的库存数量;
若是,执行所述根据所述库存扣减总数量,对所述数据库中所述热点商品的库存进行扣减步骤;
若否,输出扣减失败的提示。
可选的,所述库存扣减请求的请求状态包括下述至少一项:
待扣减状态、已完成缓存扣减状态、已完成记录插入状态、扣减成功状态、扣减中止状态。
可选的,所述在数据库中插入所述热点商品的库存扣减记录,包括:
将所述请求状态从所述待扣减状态更新为所述已完成缓存扣减状态;
在所述数据库中插入所述热点商品的库存扣减记录;
将所述请求状态从所述已完成缓存扣减状态更新为所述已完成记录插入状态。
可选的,所述根据所述库存扣减总数量,对数据库中所述热点商品的库存进行扣减步骤执行之后,还包括:
在扣减成功的情况下,将所述请求状态更新为所述扣减成功状态;
在扣减失败的情况下,将所述请求状态更新为所述扣减中止状态,并输出扣减失败的提示。
可选的,所述根据所述库存扣减总数量,对数据库中所述热点商品的库存进行扣减步骤执行之后,还包括:
在所述缓存中设置所述热点商品的缓存库存数量为0;
将所述热点商品对应的库存扣减记录中包含的所述热点商品的剩余库存扣减数量进行合并,获得所述热点商品的剩余库存扣减总数量;
根据所述剩余库存扣减总数量,对所述数据库中所述热点商品的库存进行扣减;
将所述热点商品在所述数据库中的热点状态字段记录的热点状态信息从热点开启状态更新为热点关闭状态;
在所述缓存中清除所述热点商品的库存。
上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的基于缓存的库存管理方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述基于缓存的库存管理方法的技术方案的描述。
本申请提供的一种计算机可读存储介质实施例如下:
本申请提供一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时以用于:
获取热点商品的库存扣减请求中携带的所述热点商品的库存扣减数量;
根据所述库存扣减数量,通过对缓存中所述热点商品的缓存库存进行加锁的方式对所述缓存库存进行扣减;
在扣减成功的情况下,在数据库中插入所述热点商品的库存扣减记录;
对扣减周期内插入的库存扣减记录中包含的所述热点商品的库存扣减数量进行合并,获得所述热点商品的库存扣减总数量;
根据所述库存扣减总数量,对所述数据库中所述热点商品的库存进行扣减。
可选的,所述获取热点商品的库存扣减请求中携带的所述热点商品的库存扣减数量步骤执行之前,还包括:
获取针对商品的库存进行扣减的库存扣减请求;
判断所述商品在所述数据库中的热点状态字段记录的热点状态信息是否为热点开启状态;
若是,将所述商品作为热点商品,并执行所述获取热点商品的库存扣减请求中携带的所述热点商品的库存扣减数量步骤;
若否,判断预设时间区间内针对所述商品的库存进行扣减的库存扣减请求的请求数目是否大于库存请求阈值;
若大于,将所述商品确定为热点商品;
若不大于,将所述商品确定为非热点商品。
可选的,所述将所述商品确定为热点商品步骤执行之后,还包括:
将所述热点商品在数据库中的热点状态字段记录的热点状态信息更新为热点开启状态;
将所述热点商品的库存更新至所述缓存。
可选的,所述将所述商品确定为非热点商品步骤执行之后,还包括:
获取所述非热点商品的库存扣减请求中携带的所述非热点商品的库存扣减数量;
根据所述库存扣减数量,对所述数据库中所述非热点商品的库存进行扣减。
可选的,所述获取热点商品的库存扣减请求中携带的所述热点商品的库存扣减数量步骤执行之后,所述根据所述库存扣减数量,通过对缓存中所述热点商品的缓存库存进行加锁的方式对所述缓存库存进行扣减步骤执行之前,还包括:
判断所述库存扣减数量是否小于所述缓存中所述热点商品的缓存库存数量;
若是,执行所述根据所述库存扣减数量,通过对缓存中所述热点商品的缓存库存进行加锁的方式对所述缓存库存进行扣减步骤;
若否,输出扣减失败的提示。
可选的,所述对扣减周期内插入的库存扣减记录中包含的所述热点商品的库存扣减数量进行合并,获得所述热点商品的库存扣减总数量步骤执行之后,所述根据所述库存扣减总数量,对所述数据库中所述热点商品的库存进行扣减步骤执行之前,还包括:
判断所述库存扣减总数量是否小于所述数据库中所述热点商品的库存数量;
若是,执行所述根据所述库存扣减总数量,对所述数据库中所述热点商品的库存进行扣减步骤;
若否,输出扣减失败的提示。
可选的,所述库存扣减请求的请求状态包括下述至少一项:
待扣减状态、已完成缓存扣减状态、已完成记录插入状态、扣减成功状态、扣减中止状态。
可选的,所述在数据库中插入所述热点商品的库存扣减记录,包括:
将所述请求状态从所述待扣减状态更新为所述已完成缓存扣减状态;
在所述数据库中插入所述热点商品的库存扣减记录;
将所述请求状态从所述已完成缓存扣减状态更新为所述已完成记录插入状态。
可选的,所述根据所述库存扣减总数量,对数据库中所述热点商品的库存进行扣减步骤执行之后,还包括:
在扣减成功的情况下,将所述请求状态更新为所述扣减成功状态;
在扣减失败的情况下,将所述请求状态更新为所述扣减中止状态,并输出扣减失败的提示。
可选的,所述根据所述库存扣减总数量,对数据库中所述热点商品的库存进行扣减步骤执行之后,还包括:
在所述缓存中设置所述热点商品的缓存库存数量为0;
将所述热点商品对应的库存扣减记录中包含的所述热点商品的剩余库存扣减数量进行合并,获得所述热点商品的剩余库存扣减总数量;
根据所述剩余库存扣减总数量,对所述数据库中所述热点商品的库存进行扣减;
将所述热点商品在所述数据库中的热点状态字段记录的热点状态信息从热点开启状态更新为热点关闭状态;
在所述缓存中清除所述热点商品的库存。
上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的基于缓存的库存管理方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述基于缓存的库存管理方法的技术方案的描述。
上述对本申请特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上公开的本申请优选实施例只是用于帮助阐述本申请。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本申请的内容,可作很多的修改和变化。本申请选取并具体描述这些实施例,是为了更好地解释本申请的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本申请。本申请仅受权利要求书及其全部范围和等效物的限制。