FWQ
Redis实现库存扣减的解决方案防止商品超卖
Redis实现库存扣减的解决方案防止商品超卖 0浏览 收藏 本篇文章主要是结合我之前面试的各种经历和实战开发中遇到的问题解决经验整理的,希望这篇《Redis实现库存扣减的解决方案防止商品超卖》对你有很大帮助!欢迎收藏,分享给更多的需要的朋友学习~ Redis 如何实现库存扣减操作?如何防止商品被超卖? 基于数据库单库存 基于数据库多库存 基于redis 基于redis实现扣减库存的具体实现 初始化库存回调函数(IStockCallback) 扣减库存服务(StockService)。 在日常开发中有很多地方都有类似扣减库存的操作,比如电商系统中的商品库存,抽奖系统中的奖品库存等。 解决方案 1. 使用mysql数据库 使用一个字段来存储库存,每次扣减库存去更新这个字段。 2. 还是使用数据库 但是将库存分层多份存到多条记录里面,扣减库存的时候路由一下,这样子增大了并发量,但是还是避免不了大量的去访问数据库来更新库存。 3. 将库存放到redis使用redis的incrby特性来扣减库存。 分析 在上面的第一种和第二种方式都是基于数据来扣减库存。 [基于数据库单库存] 第一种方式在所有请求都会在这里等待锁,获取锁有去扣减库存。在并发量不高的情况下可以使用,但是一旦并发量大了就会有大量请求阻塞在这里,导致请求超时,进而整个系统雪崩;而且会频繁的去访问数据库,大量占用数据库资源,所以在并发高的情况下这种方式不适用。 [基于数据库多库存] 第二种方式其实是第一种方式的优化版本,在一定程度上提高了并发量,但是在还是会大量的对数据库做更新操作大量占用数据库资源。…