CN106846024B - 基于Redis的优惠券发放方法、***和计算机可读存储介质 - Google Patents
基于Redis的优惠券发放方法、***和计算机可读存储介质 Download PDFInfo
- Publication number
- CN106846024B CN106846024B CN201510889153.0A CN201510889153A CN106846024B CN 106846024 B CN106846024 B CN 106846024B CN 201510889153 A CN201510889153 A CN 201510889153A CN 106846024 B CN106846024 B CN 106846024B
- Authority
- CN
- China
- Prior art keywords
- coupon
- redis
- execution
- coupons
- logic
- 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.)
- Active
Links
Images
Classifications
-
- 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
- G06Q30/00—Commerce
- G06Q30/02—Marketing; Price estimation or determination; Fundraising
- G06Q30/0207—Discounts or incentives, e.g. coupons or rebates
-
- 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/38—Payment protocols; Details thereof
- G06Q20/387—Payment using discounts or coupons
-
- 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
- G06Q30/00—Commerce
- G06Q30/02—Marketing; Price estimation or determination; Fundraising
- G06Q30/0207—Discounts or incentives, e.g. coupons or rebates
- G06Q30/0222—During e-commerce, i.e. online transactions
Landscapes
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Engineering & Computer Science (AREA)
- Strategic Management (AREA)
- Development Economics (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- Game Theory and Decision Science (AREA)
- Marketing (AREA)
- Economics (AREA)
- Entrepreneurship & Innovation (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提出了一种基于Redis的优惠券发放方法,包括:将优惠券和对应的总数保存到Redis中;当接收领券请求时,从Redis领取优惠券,创建领券逻辑异步执行任务并同步到Redis中,并且记录Redis领券信息日志;以及从Redis获取和执行所述领券逻辑异步执行任务,并且记录领券执行日志。本发明可以高效稳定地帮助优惠券及时发放到用户手中。
Description
技术领域
本发明涉及电子商务领域,具体涉及电商优惠券的发放方法和***。
背景技术
领券***是电商企业吸引用户注册及重复购物的关键。领券***做的不好,会给企业带来巨大的经济损失。导致企业无法有效的通过优惠券激发用户购物,从而使电商企业在竞争激烈的电商市场失去竞争力。而现在的电商网站用户日益增加、访问量巨大,给企业领券***带来了巨大挑战。
对于优惠券发放的领券***,现有的技术方案主要有以下几种:
(1)存文件:将优惠券保存服务器文件中。领券***在接到领券请求时,从文件中获取优惠券,然后执行优惠券发放逻辑,最后将优惠券发放结果反馈给用户。
(2)存RDBMS数据库:将优惠券保存到关系型数据库中。领券***在接到领券请求时,直接从数据库获优惠券,然后执行优惠券发放逻辑,最后将优惠券发放结果反馈给用户。
目前对于优惠券发放的领券***方案主要有以上谈到的几种方式,但是它们或多或少都存在一些问题:
(1)存文件:***在接到领取请求可以快速的从文件中获取一个优惠券,而后执行领取逻辑,但是由于优惠券是存放到服务器的文件中,当***需要扩展时就面对很多的困难。现在的;领券***都面临高并发不可能单单通过一台机器来实现领取***。而存文件的方式其他机器读取优惠券就非常麻烦,难以扩展。
(2)存RDBMS数据库:在领券请求量不大的情况,可以实现快速的优惠券。但当领券请求增大时,这种方案依赖于RDBMS数据库的性能,而RDBMS数据库在大量并发请求下读写都会变的很慢,无法及时响应领券请求导致领券请求数据丢失。这种方案也无法很好的扩展,因为扩展后还是依赖于数据库的性能。
基于现有方案存在的问题,我们提出了基于Redis的高并发易扩展的领券方法和***,其可以高效稳定地帮助优惠券及时发放到用户手中,从而为电商企业引入更多的用户、带来更多的用户下单。
发明内容
有鉴于此,本发明提出了一种基于Redis的优惠券发放方法,包括:将优惠券和对应的总数保存到Redis中;当接收领券请求时,从Redis领取优惠券,创建领券逻辑异步执行任务并同步到Redis中,并且记录Redis领券信息日志;以及从Redis获取和执行所述领券逻辑异步执行任务,并且记录领券执行日志。
本发明还提出了一种基于Redis的优惠券发放***,包括:优惠券发布模块,被配置为将优惠券和对应的总数保存到Redis中;领券记录模块,被配置为当接收领券请求时,从Redis领取优惠券,创建领券逻辑异步执行任务并同步到Redis中,并且记录Redis领券信息日志;以及领券执行模块,被配置为从Redis获取和执行所述领券逻辑异步执行任务,并且记录领券执行日志。
本发明还提出了一种基于Redis的优惠券发放***,包括:存储器;以及耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器中的指令,执行如上所述的优惠券发放方法。
本发明还提出了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述指令被处理器执行时实现如上所述的优惠券发放方法。
附图说明
图1示出了根据本发明的实施例的基于Redis的高并发易扩展领券***的拓扑图。
图2示出了根据本发明的实施例的基于Redis的高并发易扩展领券***的流程图。
图3示出了根据本发明的实施例的基于Redis的优惠券发放***的框图。
具体实施方式
以下对本发明的示例性实施例做出说明,其中包括本发明实施例的各种细节以有助于理解,应当将它们认为仅仅是示例性的。因此,本领域的技术人员应当认识到,可对本文描述的实施例做出各种修改和改变,而不脱离本发明的范围和精神。
本发明基于Redis实现了一个高并发易扩展的领券***,可以包括优惠券发布模块、领券记录模块、领券执行模块、领券报表模块。该***首先将优惠券和对应的总数保存到Redis中,当接收到领券请求时,***修改Redis中优惠券的总数、创建异步领取任务并同步到Redis、以及记录Redis领券信息日志,返还用户领取结果。其中领券执行逻辑是通过Redis实现分布式异步执行的,从而实现对领券请求实时快速处理,领券执行完成后记录领券执行信息。
图1示出了根据本发明的实施例的基于Redis的高并发易扩展领券***的拓扑图。
首先用户发起优惠券领取请求,请求会通过网络到达一个机房的Nginx服务器,Nginx将该领券请求分发给领券记录服务器处理领券请求。Nginx服务器将请求分到到web应用服务器集群(即,领券记录服务器)中的某一台web服务器后,web服务器从Redis获取并修改优惠券数量并记录领取信息(即Redis领券信息日志),如果获取优惠券成功,创建领券逻辑异步执行任务,至此处理领券请求结束。通过领券执行模块来执行优化券领取的业务逻辑,将优惠券放到用户账号下,记录领券执行日志,所述领券执行日志可以包括领券记录信息、执行领券的耗时等。如果由于接口等问题导致执行领券异常,这时可以通过在领券记录服务器中存放的领券日志信息,重新创建领券逻辑异步执行任务,从而保证优惠券发送给用户。
图2示出了根据本发明实施例的基于Redis的高并发易扩展领券***的流程图。***流程图的各步骤主要通过优惠券发布模块、领券记录模块、领券执行模块以及领券报表模块来完成。
优惠券发布模块:优惠券发布模块的主要功能是创建优惠券,并将优惠券信息缓存到Redis中,缓存的内容包括所有优惠券及优化券的总数。对不同的优惠券缓存不同的key,从而可以实现同时发放多种不同的优惠券。
领券记录模块:领券记录模块的主要功能是快速及时的处理大量的领券请求。不仅要准确的记录领券信息而且需要考虑高并发和快速响应的特性,为此本方案设计的领券记录模块涉及三个操作,减少优惠券总数、创建领券逻辑异步执行任务、记录领券信息日志。三个操作都非常快,减少优惠券总数涉及一次简单的Redis INCR操作,创建异步任务也只涉及一次简单的Redis add操作,记录领券信息日志只是简单的java命令不涉及网络和文件操作。因此我们可以充分利用Redis的高并发性及时处理高并发的领券请求。领券信息日志,一是可以用来校验统计报表(下文将描述)的准确性,二是可以在***出现异常时补充数据,保证***的稳定性。
领券执行模块:领券执行模块的主要任务是异步执行领券的业务逻辑,包括从Redis获取领取任务,调用优惠券领取接口,存放领券记录信息,记录领券执行耗时等。通过领券执行模块,把优惠券领取过程中需要和外部接口打交道的、涉及网络和数据的操作隔离出来,从而包括优惠券领取过程的快速完成。并且,领券执行模块采用多线程技术,可以快速地实现领券业务逻辑。通过领券记录信息,即使在领取执行异常时也可以保证将优惠券发放到用户手中。
领券报表模块:领券报表模块提供对领券执行情况的查询,如领券记录信息、领券执行耗时等。从而可以根据报表觉得是否发放更多的优化券,以及根据领券耗时等情况以决定是否需要添加或者减少服务器。
图3示出了根据本发明实施例的发放优惠券的***300的框图。
如图3所示,一种基于Redis的优惠券发放***,包括:优惠券发布模块301,被配置为将优惠券和对应的总数保存到Redis中;领券记录模块302,被配置为当接收领券请求时,从Redis领取优惠券,创建领券逻辑异步执行任务并同步到Redis中,并且记录Redis领券信息日志;以及领券执行模块303,被配置为从Redis获取和执行所述领券逻辑异步执行任务,并且记录领券执行日志。
在一个实施例中,***300还可以包括:领券报表模块304(虚线框所示),被配置为生成领券报表,其中所述领券报表包括所述领券执行日志,用于确定是否需要发放更多的优惠券和/或确定是否需要增加或者减少执行领券逻辑异步执行任务的服务器。
在一个实施例中,所述领券执行日志包括领券记录信息和领券执行耗时。
在一个实施例中,所述Redis领券信息日志包括与从Redis领取优惠券、创建和保存领券执行任务有关的信息。
在一个实施例中,所述领券记录模块302还被配置为减少Redis中优惠券的总数。
综上,可以看出,本发明提出的领券***不会使用服务器的文件存放优化券,而用户Redis存放优惠券及其数总数,因此可以实现很好的扩展性;记录领券请求的服务器只是简单的减少优惠券总数、创建优惠券逻辑异步执行任务、记录领券信息日志,快速的返回优惠券领取结果。记录领券请求的服务器不需读写数据库,可以非常方面的添加服务器,也不会对RDBMS数据库带来压力,非常容易扩充实例具有良好的扩展性。而Redis具有高并发实时可用性,从而保证了记录服务器可以再处理较高并发的领券请求的同时保证了各种数据的及时高效的处理,使***具有处理高并发领券请求的能力。
本发明通过领券记录模块处理高并发领券请求并记录日志。通过领券执行模块分布式异步执行领取逻辑可以实现快速反馈领取结果。该方案可以较好的解决高并发领券请求对数据库压力及快速响应,以及领券***难于扩展的问题。
需要注意的是,以上仅为本发明的较佳实施例及原理。本领域的技术人员会理解,本发明不限于这里的特定实施例。本领域的技术人员能够做出各种明显变化、调整和替代,而不脱离本发明的保护范围。本发明的范围由所附权利要求界定。
Claims (10)
1.一种基于Redis的优惠券发放方法,包括:
将优惠券和对应的总数保存到Redis中;
当接收领券请求时,从Redis领取优惠券,创建领券逻辑异步执行任务并同步到Redis中,并且记录Redis领券信息日志;以及
从Redis获取和执行所述领券逻辑异步执行任务,并且记录领券执行日志;
其中,所述方法还包括:
生成领券报表,其中所述领券报表包括所述领券执行日志,用于确定是否需要发放更多的优惠券和/或确定是否需要增加或者减少执行领券逻辑异步执行任务的服务器。
2.根据权利要求1所述的方法,其中所述领券执行日志包括领券记录信息和领券执行耗时。
3.根据权利要求1所述的方法,其中所述Redis领券信息日志包括与从Redis领取优惠券、创建和保存领券执行任务有关的信息。
4.根据权利要求1所述的方法,其中从Redis领券优惠券包括减少Redis中优惠券的总数。
5.一种基于Redis的优惠券发放***,包括:
优惠券发布模块,被配置为将优惠券和对应的总数保存到Redis中;
领券记录模块,被配置为当接收领券请求时,从Redis领取优惠券,创建领券逻辑异步执行任务并同步到Redis中,并且记录Redis领券信息日志;以及
领券执行模块,被配置为从Redis获取和执行所述领券逻辑异步执行任务,并且记录领券执行日志;
其中,所述***还包括:
领券报表模块,被配置为生成领券报表,其中所述领券报表包括所述领券执行日志,用于确定是否需要发放更多的优惠券和/或确定是否需要增加或者减少执行领券逻辑异步执行任务的服务器。
6.根据权利要求5所述的***,其中所述领券执行日志包括领券记录信息和领券执行耗时。
7.根据权利要求5所述的***,其中所述Redis领券信息日志包括与从Redis领取优惠券、创建和保存领券执行任务有关的信息。
8.根据权利要求5所述的***,其中所述领券记录模块还被配置为减少Redis中优惠券的总数。
9.一种基于Redis的优惠券发放***,包括:
存储器;以及
耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器中的指令,执行如权利要求1至4中任一项所述的优惠券发放方法。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述指令被处理器执行时实现如权利要求1至4中任一项所述的优惠券发放方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510889153.0A CN106846024B (zh) | 2015-12-07 | 2015-12-07 | 基于Redis的优惠券发放方法、***和计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510889153.0A CN106846024B (zh) | 2015-12-07 | 2015-12-07 | 基于Redis的优惠券发放方法、***和计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106846024A CN106846024A (zh) | 2017-06-13 |
CN106846024B true CN106846024B (zh) | 2021-03-30 |
Family
ID=59151498
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510889153.0A Active CN106846024B (zh) | 2015-12-07 | 2015-12-07 | 基于Redis的优惠券发放方法、***和计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106846024B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109191162A (zh) * | 2018-07-06 | 2019-01-11 | 中国建设银行股份有限公司 | 信息处理方法、***、装置及存储介质 |
CN109242454A (zh) * | 2018-08-14 | 2019-01-18 | 阿里巴巴集团控股有限公司 | 电子红包的发放方法、装置、服务器及可读存储介质 |
CN109582682B (zh) * | 2018-11-02 | 2024-04-09 | 中国平安人寿保险股份有限公司 | 数据处理方法、装置及存储介质、计算机设备 |
CN110363579A (zh) * | 2019-06-28 | 2019-10-22 | 北京奇才天下科技有限公司 | 一种基于优惠券的用户营销方法、装置和电子设备 |
CN114119109B (zh) * | 2022-01-21 | 2022-10-18 | 浙江口碑网络技术有限公司 | 一种优惠资源处理方法及装置 |
CN117909370B (zh) * | 2024-03-15 | 2024-05-31 | 小芒电子商务有限责任公司 | 一种优惠券处理方法及*** |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102780768A (zh) * | 2012-06-29 | 2012-11-14 | 北京奇虎科技有限公司 | 一种大并发量请求的处理方法及处理*** |
CN103336815A (zh) * | 2013-06-27 | 2013-10-02 | 北京京东尚科信息技术有限公司 | 网络广告推送的***和方法 |
CN103886079A (zh) * | 2014-03-26 | 2014-06-25 | 北京京东尚科信息技术有限公司 | 一种数据处理方法和*** |
CN104715349A (zh) * | 2013-12-12 | 2015-06-17 | 世纪禾光科技发展(北京)有限公司 | 一种电子商务运费计算的方法和*** |
CN104881494A (zh) * | 2015-06-12 | 2015-09-02 | 北京奇虎科技有限公司 | 与Redis服务器进行数据同步的方法、装置和*** |
-
2015
- 2015-12-07 CN CN201510889153.0A patent/CN106846024B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102780768A (zh) * | 2012-06-29 | 2012-11-14 | 北京奇虎科技有限公司 | 一种大并发量请求的处理方法及处理*** |
CN103336815A (zh) * | 2013-06-27 | 2013-10-02 | 北京京东尚科信息技术有限公司 | 网络广告推送的***和方法 |
CN104715349A (zh) * | 2013-12-12 | 2015-06-17 | 世纪禾光科技发展(北京)有限公司 | 一种电子商务运费计算的方法和*** |
CN103886079A (zh) * | 2014-03-26 | 2014-06-25 | 北京京东尚科信息技术有限公司 | 一种数据处理方法和*** |
CN104881494A (zh) * | 2015-06-12 | 2015-09-02 | 北京奇虎科技有限公司 | 与Redis服务器进行数据同步的方法、装置和*** |
Also Published As
Publication number | Publication date |
---|---|
CN106846024A (zh) | 2017-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106846024B (zh) | 基于Redis的优惠券发放方法、***和计算机可读存储介质 | |
US20180225350A1 (en) | Query dispatching system and method | |
US20190361913A1 (en) | Data replication technique in database management system | |
US11138227B2 (en) | Consistent query execution in hybrid DBMS | |
CN106649828B (zh) | 一种数据查询方法及*** | |
CN108804112A (zh) | 一种区块链落账处理方法及*** | |
WO2019109854A1 (zh) | 分布式数据库数据处理方法、装置、存储介质及电子装置 | |
CN105095247B (zh) | 符号数据分析方法和*** | |
EP3039574A1 (en) | Queries involving multiple databases and execution engines | |
CN107423404B (zh) | 流程实例数据同步处理方法和装置 | |
CN106569896B (zh) | 一种数据分发及并行处理方法和*** | |
US20210216498A1 (en) | Intelligent merging for efficient updates in columnar databases | |
CN104317957A (zh) | 一种报表处理的开放平台、***及报表处理方法 | |
US11099960B2 (en) | Dynamically adjusting statistics collection time in a database management system | |
US11061926B2 (en) | Data warehouse management and synchronization systems and methods | |
US11144574B2 (en) | System and method for managing database | |
EP3149589B1 (en) | System and method for dynamic collection of system management data in a mainframe computing environment | |
US8539492B1 (en) | Managing data dependencies among multiple jobs using separate tables that store job results and dependency satisfaction | |
US20170269974A1 (en) | Speculative execution of a stream of changes | |
CN106716400A (zh) | 一种数据表的分区管理方法及装置 | |
CN109299175B (zh) | 数据库动态扩展方法、***、装置和存储介质 | |
CN116383207A (zh) | 一种数据标签管理方法、装置、电子设备和存储介质 | |
CN112783980A (zh) | 数据同步处理方法、装置、电子设备以及计算机可读介质 | |
CN116860808A (zh) | 管理实时数据流处理 | |
CN111459931A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |