关于幂等性操作最容易想到的方法是通过事务(数据库)来解决,但是性能很不好。(传统的管理软件、访问量小的站点比较多的用到)
分布式处理中,也有给请求加锁(redis),性能还可以,但同样有性能损耗,并发越大,对性能要求 越高,一点点性能损耗都是浪费。(对性能没有极致要求的高并发都可以用)
我们这里没有简单粗暴的用上面的两种方案,而是基于业务逻辑,只需要控制住库存的数量,于是在加减库存的地方,使用原子性的 +1 / -1 这种操作(redis->incr)来完成,这样也就可以在不增加性能损耗的情况下很好的避免了超卖这种问题。(基于业务场景的终极方案)