`
qtlkw
  • 浏览: 308512 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

使用 redis 减少 秒杀库存 超卖思路

    博客分类:
  • JAVA
 
阅读更多
12月份重构公司社群活动产品,原来自己不是很成熟,按传统的形式处理卖票的信息-现在回首很多地方都会出问题。


先说下背景:业务是卖票!所以自然而然会遇到高并发下的库存问题


搜了很多网上提供以下几种方案:

1.并发数很小,不考虑并发的话采用Redis的原子操作。缺点也很显然,高并发肯定是有问题的!对应方案如下

http://blog.csdn.net/wujiangwei567/article/details/51210600


2.高并发请求采用队列形式,化解为单线程。消费时再使用Redis原子操作加减库存


3.采用Redis的分布式锁

上面是转载,公司目前用的是第一种方案,实际并发数不多。
分享到:
评论

相关推荐

    Redis 高并发秒杀商品系统(Spring MVC+bootstrap+redis+mybatis)

    其次,Redis的原子操作(如INCR)可以用来实现抢购的公平性,避免因并发问题导致的库存超卖。此外,Redis还可以用作消息队列,存储成功抢购的请求,然后后台异步处理,避免因数据库事务阻塞而降低系统性能。 ...

    基于 SpringBoot+Mybatis+Redis+RabbitMQ 秒杀系统 17.zip

    在秒杀系统中,Redis的主要作用是存储和快速读取秒杀商品的信息,如库存状态,以及实现分布式锁来防止超卖。通过在内存中存储数据,Redis可以提供极快的读写速度,从而满足高并发场景的需求。 【RabbitMQ】是一个...

    秒杀小项目

    - **库存存储**:商品的秒杀库存可以预先存储在Redis中,确保数据的快速读取和更新。 - **队列实现**:利用Redis的List或Set结构,可以实现请求的排队,避免并发问题。 - **分布式锁**:使用Redis的`SETNX`命令...

    PHP商品秒杀功能实现源码

    - 预加载:提前计算出可参与秒杀的用户,减少秒杀开始时的数据库查询。 4. **缓存策略**: - 使用缓存(如Redis)存储热门商品信息,减少对数据库的访问。 - 库存信息也可以存储在缓存中,秒杀开始时直接在缓存...

    java秒杀系统

    - **预热**:在秒杀开始前,将商品信息加载到Redis中,减少数据库压力。 - **限流**:通过设置Redis中的计数器,限制在短时间内处理的请求数量,防止系统过载。 - **库存扣减**:使用Redis的原子操作(如INCRBY)...

    秒杀系统架构设计-许大牛

    3. **分布式缓存**:使用Redis或Memcached等内存数据库存储热门商品信息,减少对数据库的访问,提高响应速度。同时,可以利用分布式锁机制防止超卖问题。 4. **队列服务**:通过消息队列(如RabbitMQ、Kafka)异步...

    简易秒杀系统

    同时,为了减少数据库的读写压力,可能会采用预加载库存到内存或使用队列进行异步处理。 批量入库是指在秒杀活动开始前,将商品信息一次性加载到缓存中,以减少活动开始时对数据库的查询压力。这通常结合缓存技术...

    秒杀业务实现

    通过Redis的原子操作,如INCR命令,可以实现对商品库存的原子减扣,避免并发问题导致的库存超卖。 ActiveMQ是Apache出品的一款开源消息中间件,它实现了JMS(Java Message Service)标准。在秒杀业务中,ActiveMQ...

    seckill:使用SSM框架开发的商品秒杀系统,实现RESTful风格API,并通过redis缓存、优化SQL、存储过程等方法支持高并发

    在秒杀系统中,可能会使用存储过程来实现库存的原子减扣,保证在高并发下不会超卖。 总的来说,这个商品秒杀系统利用了SSM框架的强大功能,结合RESTful API的设计原则,以及Redis缓存、SQL优化和存储过程等优化手段...

    秒杀项目代码,秒刀房代码,Java源码.zip

    2. **分布式锁**:为了防止超卖,秒杀系统通常会用到分布式锁。Java中的Redis或Zookeeper可以实现分布式锁,确保同一时刻只有一个请求能够修改库存。 3. **缓存策略**:为减轻数据库压力,可采用缓存技术,如Redis...

    关于php 高并发解决的一点思路

    此类活动由于涉及的用户量巨大且并发请求密集,很容易造成超卖问题,即库存数量不足导致商品售出量超过实际库存数量。为了解决这一问题,我们可以考虑以下几个方面的技术解决方案。 首先,可以使用消息队列来处理...

    seckill

    2. **分布式锁**:利用Redis的SetNX命令实现分布式锁,确保同一时刻只有一个线程执行特定操作,防止库存超卖。 3. **计数器**:Redis的原子操作如INCR/DECR可用于实时统计请求次数,实现限流。 4. **消息队列**:...

Global site tag (gtag.js) - Google Analytics