解决数据一致性方案
本文只讲述原理,均为伪代码,具体实现还得小伙伴实现。
Redis
Redis中第一种库存存储方式
- hset(key,value,goods) == set(key,goods)
- 秒杀业务下单
代码:
//查询商品
goods = redis.get(key);
//判断库存
if (goods.getStockCount <= 0) {
//已售馨
} else {
//减redis库存
//下单业务
}
-
问题:
- 在第一步执行,如果有多个线程一起进来,都会拿到相同数量库存,会出现超卖现象。
Redis中第二种方式
- hset(key,value,goods) == set(key,goods)
- 库存:hset(key, value, stockCount)
//减库存
Long result = redis.increment(key,