时间:2023-05-18 09:03:02 | 来源:网站运营
时间:2023-05-18 09:03:02 来源:网站运营
Redis秒杀实战:微信抢红包(附源码):CREATE TABLE `red_packet_info` ( `id` int(11) NOT NULL AUTO_INCREMENT, `red_packet_id` bigint(11) NOT NULL DEFAULT 0 COMMENT '红包id,采⽤timestamp+5位随机数', `total_amount` int(11) NOT NULL DEFAULT 0 COMMENT '红包总⾦额,单位分', `total_packet` int(11) NOT NULL DEFAULT 0 COMMENT '红包总个数', `remaining_amount` int(11) NOT NULL DEFAULT 0 COMMENT '剩余红包⾦额,单位分', `remaining_packet` int(11) NOT NULL DEFAULT 0 COMMENT '剩余红包个数', `uid` int(20) NOT NULL DEFAULT 0 COMMENT '新建红包⽤户的⽤户标识', `create_time` timestamp COMMENT '创建时间', `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATECURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='红包信息表,新建⼀个红包插⼊⼀条记录';
红包记录表CREATE TABLE `red_packet_record` ( `id` int(11) NOT NULL AUTO_INCREMENT, `amount` int(11) NOT NULL DEFAULT '0' COMMENT '抢到红包的⾦额', `nick_name` varchar(32) NOT NULL DEFAULT '0' COMMENT '抢到红包的⽤户的⽤户名', `img_url` varchar(255) NOT NULL DEFAULT '0' COMMENT '抢到红包的⽤户的头像', `uid` int(20) NOT NULL DEFAULT '0' COMMENT '抢到红包⽤户的⽤户标识', `red_packet_id` bigint(11) NOT NULL DEFAULT '0' COMMENT '红包id,采⽤timestamp+5位随机数', `create_time` timestamp COMMENT '创建时间', `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATECURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='抢红包记录表,抢⼀个红包插⼊⼀条记录';
2.4 发红包 API❝往db中就单纯存入一条记录,Service层和Mapper层,就简单的一条sql语句,主要是提供思路,下面会附案例源码,不要慌2.5 抢红包 API
❞
<dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>29.0-jre</version></dependency>
4.3.2 数据库会员表CREATE TABLE `sys_user` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `user_name` varchar(11) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '⽤户名', `image` varchar(11) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '⽤户头像', PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;
4.3.3 初始化布隆过滤器链接: https://pan.baidu.com/s/16DlKLm8WGFzGkoPpy8y4Aw5.3.2. 编译
密码: 25w1
loadmodule /usr/soft/RedisBloom-2.2.4/redisbloom.so
5.3.4 测试布隆过滤器local bloomName = KEYS[1]local value = KEYS[2]--bloomFilterlocal result_1 = redis.call('BF.ADD',bloomName,value)return result_1
local bloomName = KEYS[1]local value = KEYS[2]--bloomFilterlocal result_1 = redis.call('BF.EXISTS',bloomName,value)return result_1
6.2 在 RedisService.java 中添加 2 个方法set skuId_start_1 0_1554045087 --秒杀标识set skuId_access_1 12000 --允许抢购数set skuId_count_1 0 --抢购计数set skuId_booked_1 0 --真实秒杀数
"skuId_booked":10000 //从0开始累加,秒杀的个数只能加到1万
将用户订单数据写入 MQ(异步方式)。set skuId_start_1 0_1554045087 --秒杀标识set skuId_access_1 12000 --允许抢购数set skuId_count_1 0 --抢购计数set skuId_booked_1 0 --真实秒杀数
7.7 秒杀验证链接(奶牛 快传): https://cowtransfer.com/s/74998eaf64da44
取件码: rqzbyj
作者:陈彦斌
链接:https://www.cnblogs.com/chenyanbin/p/13587508.html
来源:博客园
关键词:实战