多线程并发下商品库存递减或者抢购商品数量累加,可以使用increment()方法
通常使用异步的方式,前端=>用户抢购处理=>缓存=>队列=>持久化,
可以使用入队列的方式来异步持久化已抢购到商品的用户数据,
@Autowired
private RedisTemplate redisTemplate;
//已销售商品数量累计(可以解决多线程并发问题)
//increment 会首先检查是否有缓存,如果没有则置0并加1,如果有缓存则累加1
long count = redisTemplate.opsForValue().increment("goodsTypeKey1", 1);
//当售出商品小于100个时才允许下单
if (count <= 100) {
//进行业务处理....
//存入队列....
}else{
//商品已请购完,明天再来哟!
}
//返回处理结果完成...