redis高并发抽奖(2)

本文介绍了使用Redis设计高并发抽奖系统的思路,包括表结构、概率规则、用户抽奖次数限制和奖品唯一性的保证。通过生成活动特定的随机序列码进行兑奖判断,确保抽奖活动的公平性和效率。
摘要由CSDN通过智能技术生成
本篇文章是基于原先写的一篇文章 进行的另一种补充方案,原先的每次抽奖都会进行计算一次概率和奖品,内存消耗比较大,不太建议使用!本次方案借鉴了腾讯红包先计算在分发策略极大的提高系统的效率和减少内存的消耗。下面我给大家介绍一下本次抽奖补充方案内容。


一、思路

1.表结构:

drop table T_LOTTERY_MANAGEMENT cascade constraints;

/*==============================================================*/
/* Table: T_LOTTERY_MANAGEMENT      抽奖活动管理                */
/*==============================================================*/
create table T_LOTTERY_MANAGEMENT 
(
   LOTTERY_ID           VARCHAR2(50)         not null,
   LOTTERY_NAME         VARCHAR2(50),
   SPONSOR_POINT        INT,
   LOTTERY_TYPE         INT,
   LOTTERY_POINT        INT,
   START_DATE           DATE,
   STOP_DATE            DATE,
   LOTTERY_TOTAIL_NUM   INT,
   LOTTERY_SURPLUS_NUM  INT,
   LOTTERY_NUM          INT,
   LOTTERY_OVER         INT,
   CREATE_TIME          DATE,
   constraint PK_T_LOTTERY_MANAGEMENT primary key (LOTTERY_ID)
);

comment on column T_LOTTERY_MANAGEMENT.LOTTERY_ID is
'抽奖活动编号';

comment on column T_LOTTERY_MANAGEMENT.LOTTERY_NAME is
'活动名称';

comment on column T_LOTTERY_MANAGEMENT.SPONSOR_POINT is
'公司赞助积分';

comment on column T_LOTTERY_MANAGEMENT.LOTTERY_TYPE is
'公司赞助(0否1是)';

comment on column T_LOTTERY_MANAGEMENT.LOTTERY_POINT is
'每次抽奖消耗积分';

comment on column T_LOTTERY_MANAGEMENT.START_DATE is
'活动开始时间';

comment on column T_LOTTERY_MANAGEMENT.STOP_DATE is
'活动结束时间';

comment on column T_LOTTERY_MANAGEMENT.LOTTERY_TOTAIL_NUM is
'抽奖总次数';

comment on column T_LOTTERY_MANAGEMENT.LOTTERY_SURPLUS_NUM is
'抽奖剩余次数';

comment on column T_LOTTERY_MANAGEMENT.LOTTERY_NUM is
'已抽奖次数';

comment on column T_LOTTERY_MANAGEMENT.LOTTERY_OVER is
'抽奖次数是否耗尽(0未耗尽1已耗尽)';

comment on column T_LOTTERY_MANAGEMENT.CREATE_TIME is
'创建时间';

drop table T_PRIZE cascade constraints;

/*==============================================================*/
/* Table: T_PRIZE                   奖品表                      */
/*==============================================================*/
create table T_PRIZE 
(
   ID                   INT                  not null,
   LOTTERY_ID           VARCHAR(50),
   PRIZE_TYPE           INT,
   CLASS_ID             INT,
   PRODUCT_ID           VARCHAR(50),
   PRODUCT_ATTRIBUTES_ID VARCHAR(50),
   PRIZE_NAME           VARCHAR(50),
   PRIZE_PRICE          DECIMAL(7,2),
   POINT                INT,
   PRIZE_NUM            INT,
   PRIZE_TOTAIL_POINT   INT,
   PRIZE_LEV            INT,
   PRIZE_PROBABILITY    DECIMAL(6,4),
   REMARKS              CLOB,
   CREATE_TIME          DATE,
   constraint PK_T_PRIZE primary key (ID)
);

comment on column T_PRIZE.ID is
'自增ID';

comment on column T_PRIZE.LOTTERY_ID is
'抽奖活动编号';

comment on column T_PRIZE.PRIZE_TYPE is
'奖品类型';

comment on column T_PRIZE.CLASS_ID is
'虚拟奖品分类ID';

comment on column T_PRIZE.PRODUCT_ID is
'虚拟奖品ID';

comment on column T_PRIZE.PRODUCT_ATTRIBUTES_ID is
'奖品属性ID';

comment on column T_PRIZE.PRIZE_NAME is
'奖品名称';

comment on column T_PRIZE.PRIZE_PRICE is
'剩余价值';

comment on column T_PRIZE.POINT is
'单个奖品价值(能力豆)';

comment on column T_PRIZE.PRIZE_NUM is
'奖品数量';

comment on column T_PRIZE.PRIZE_TOTAIL_POINT is
'奖品总价值(能力豆)';

comment on column T_PRIZE.PRIZE_LEV is
'奖品等级';

comment on column T_PRIZE.PRIZE_PROBABILITY is
'中奖概率';

comment on column T_PRIZE.REMARKS is
'备注';

comment on column T_PRIZE.CREATE_TIME is
'创建时间';


drop table T_WINNING_RECORD cascade constraints;

/*==================================================
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值