《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门,即可获取!
-
拆红包,根据
redPacketId
获取分布式锁,如果获取到锁,红包个数减一,如果剩余红包个数大于零抢红包成功、否则失败。成功则计算红包金额,缓存总红包金额减去抢到的红包金额,异步入库、异步到账。 -
若获取分布式锁失败,使用
Redis
的decr
命令对红包个数加一。
数据库设计
- 红包信息表
CREATE TABLE red_racket
(
id
bigint(20) NOT NULL AUTO_INCREMENT COMMENT ‘自增主键’,
red_packet_id
bigint(20) NOT NULL COMMENT ‘红包唯一ID’,
total_amount
int(11) NOT NULL COMMENT ‘红包金额单位分’,
total_packet
int(11) NOT NULL COMMENT ‘红包个数’,
type
int(11) NOT NULL COMMENT ‘红包类型’,
create_time
datetime DEFAULT NULL COMMENT ‘创建时间’,
version