@RestController
@RequestMapping("/rushbuy")
@Slf4j
public class RushbuyController {
@Autowired
private RedisTemplate redisTemplate;
//发布抢购,初始库存
@PutMapping("/save/good/data")
public void save() {
int aaSkuNum = 100;
redisTemplate.opsForList().trim("aaSku:num", -1, 0);
List<Integer> skuList = new ArrayList<>();
for (int i = 1; i <= aaSkuNum; i++) {
skuList.add(i);
}
redisTemplate.opsForList().rightPushAll("aaSku:num", skuList);
List list = redisTemplate.opsForList().range("aaSku:num", 0, -1);
log.info("list = {}", list.toString());
}
//抢购
@GetMapping("/buy")
public void buy() {
Object goods = redisTemplate.opsForList().leftPop("aaSku:num");
log.info("leftPop = {}", goods);
if (goods == null) {
log.info("秒杀失败(无库存)...");
}else{
int num = new Random().nextInt(1000) + 1;
Long result = redisTemplate.opsForSet().add("candidate:userids", num);
if (result > 0) {
log.info("成功秒杀");
} else {
System.out.println("重复下单 :::::: " + num);
redisTemplate.opsForList().rightPush("sku:awards", 1);
}
}
}
}
Swagger-UI往redis中初始库存
Jmeter多线程模拟购买