Springboot秒杀系统(乐观锁+RateLimiter令牌+Redis缓存)

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 20:52   1359   0

本文主要是利用springboot,实现一个单机版秒杀demo,通过单机版实现,可以对基本并发秒杀的知识有一定的了解。

首先先提供秒杀业务实现类:


/**
 * spring 注解加在实现类
 */
@Service
@Transactional
public class OrderServiceImpl implements OrderService {

    @Autowired
    private StockMapper stockMapper;

    @Autowired
    private StockOrderMapper orderMapper;

    @Autowired
    private StringRedisTemplate redisTemplate;
    //方法用synchronized修饰,单机应用增加悲观锁
    //注意,与@Transactional一起使用是,不会生效,如要要使用的话在调用该方法的地方使用synchronized代码块
    //原因:Transactional事务是在锁之前开始的,事务范围广,当一个线程锁释放了,但是事务还没提交,当下个线程过来是,一起提交上一次事务
    //一般不建议使用,线程会单个使用,降低效率,并且不要在业务代码增加synchronized
    @Override
    public  int kill(Integer id) {

        //加入redis缓存限时抢购,即使获得令牌如果不在活动时间内也是无法抢购
        //校验redis中秒杀商品是否结束
        if (!redisTemplate.hasKey("kill"+id)) {
           throw new Runtime
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP