京东如何确保Redis中库存扣减准确且避免商品超卖?

2026-05-05 20:461阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计2036个文字,预计阅读时间需要9分钟。

京东如何确保Redis中库存扣减准确且避免商品超卖?

在开发过程中,许多地方都存在类似压缩库存的操作,如电商系统中的商品库存,抽奖系统中的奖品库存等。解决方案是使用MySQL数据库,并采用一个字段的直接操作。

来源:my.oschina.net/xiaolyuh/blog/1615639

京东如何确保Redis中库存扣减准确且避免商品超卖?

在日常开发中有很多地方都有类似扣减库存的操作,比如电商系统中的商品库存,抽奖系统中的奖品库存等。

解决方案
  1. 使用mysql数据库,使用一个字段来存储库存,每次扣减库存去更新这个字段。
  2. 还是使用数据库,但是将库存分层多份存到多条记录里面,扣减库存的时候路由一下,这样子增大了并发量,但是还是避免不了大量的去访问数据库来更新库存。
  3. 将库存放到redis使用redis的incrby特性来扣减库存。
分析

在上面的第一种和第二种方式都是基于数据来扣减库存。

基于数据库单库存

第一种方式在所有请求都会在这里等待锁,获取锁有去扣减库存。在并发量不高的情况下可以使用,但是一旦并发量大了就会有大量请求阻塞在这里,导致请求超时,进而整个系统雪崩;而且会频繁的去访问数据库,大量占用数据库资源,所以在并发高的情况下这种方式不适用。

基于数据库多库存

第二种方式其实是第一种方式的优化版本,在一定程度上提高了并发量,但是在还是会大量的对数据库做更新操作大量占用数据库资源。

阅读全文

本文共计2036个文字,预计阅读时间需要9分钟。

京东如何确保Redis中库存扣减准确且避免商品超卖?

在开发过程中,许多地方都存在类似压缩库存的操作,如电商系统中的商品库存,抽奖系统中的奖品库存等。解决方案是使用MySQL数据库,并采用一个字段的直接操作。

来源:my.oschina.net/xiaolyuh/blog/1615639

京东如何确保Redis中库存扣减准确且避免商品超卖?

在日常开发中有很多地方都有类似扣减库存的操作,比如电商系统中的商品库存,抽奖系统中的奖品库存等。

解决方案
  1. 使用mysql数据库,使用一个字段来存储库存,每次扣减库存去更新这个字段。
  2. 还是使用数据库,但是将库存分层多份存到多条记录里面,扣减库存的时候路由一下,这样子增大了并发量,但是还是避免不了大量的去访问数据库来更新库存。
  3. 将库存放到redis使用redis的incrby特性来扣减库存。
分析

在上面的第一种和第二种方式都是基于数据来扣减库存。

基于数据库单库存

第一种方式在所有请求都会在这里等待锁,获取锁有去扣减库存。在并发量不高的情况下可以使用,但是一旦并发量大了就会有大量请求阻塞在这里,导致请求超时,进而整个系统雪崩;而且会频繁的去访问数据库,大量占用数据库资源,所以在并发高的情况下这种方式不适用。

基于数据库多库存

第二种方式其实是第一种方式的优化版本,在一定程度上提高了并发量,但是在还是会大量的对数据库做更新操作大量占用数据库资源。

阅读全文