浅谈秒杀系统中的库存控制

  我在面试别人的时候,经常会问对方,如何设计一个秒杀系统?回答的好的同学并不多,这里我简要说一下考察这个问题的目的.秒杀系统,那么顾名思义就是抢购,库存有限情况下的竞争问题,其实就是一个高并发的处理.

首先我们模拟不做并发处理的情况:

比如我们用户一个库存表 stock,库存数量5

我们对外提供了一个接口供前端调用,

这个接口,只是简单的判断了库存数量是否大于0,如果小于0则返回失败.

我们重开一个控制台程序,模拟10个线程并发

可以看到,我们成功了7次,而库存只有5个,说明我们超卖了2个.

那么要如何解决这个并发问题呢?

很简单可以利用redis的原子性,让redis把无效的请求遮挡掉

这样就没有并发问题了.

这里讲解下什么是redis的原子性:

1、Redis是单进程单线程的网络模型,用的是epoll网络模型,网络模型都是单线程异步非阻塞处理网络请求

2、Redis的单线程处理所有的客户端连接请求,命令读写请求。(有些任务比如rdb和aof等操作是fork子进程处理的,不会影响redis主线程处理客户端的命令)

3、Redis提供的所有API操作,相对于服务端方面都是one by one执行的,命令是一个接着一个执行的,不存在并行执行的情况。

(0)

相关推荐

  • redis概述

    缓存是如何实现高性能的 当第一次查询的时候,缓存里面没有数据,回去数据库查,然后存入缓存,当再去查询的时候,或者是查询相同数据的时候,就不用去数据库里面查了,直接去缓存里面找,大大提高了效率,如果这个 ...

  • 15张图解Redis为什么这么快

    来自公众号:IT界农民工 作为一名服务端工程师,工作中你肯定和 Redis 打过交道.Redis 为什么快,这点想必你也知道,至少为了面试也做过准备.很多人知道 Redis 快仅仅因为它是基于内存实现 ...

  • 浅谈linux系统中mv、cp、rm这三种命令的工作原理 | Linux运维部落

    mv.cp.rm命令是linux系统中经常用到的工具,但是如果想知道这些命令在执行过程中底层具体做了哪些工作,我们首先要了解下一个关键的东西:inode 表.   inode(index node)表 ...

  • 浅谈集中供热系统施工中应注意的几个问题

    摘  要 在集中供热系统刚开始运行的时候,总是会出现一些问题,比如说局部的散热器不热或者室内的温度达不到一开始设计的要求等,出现这些现象的原因一般有两个方面,一个是设计方面的原因,一个是施工方面的原因 ...

  • 【微分享】浅谈住宅建筑中各种形式的地暖系统

    作者 朱峻 机电人脉原创 作者授权发布,转载请注明出处 在经济社会不断发展的今天,人们对居住环境的舒适度要求也在不断提高:其中舒适度比较高的地暖系统在我国许多城市的住宅建筑内已经逐渐成为标准配置,今天 ...

  • 浅谈为什么西方油画中塑造的丰腴女人形象看上去却是那么美?

    丰腴,直白地讲,就是有些胖或者微胖的意思. 喜欢油画艺术的朋友不难发现,西方油画中表现女性题材的作品非常多,其中有不少表现的是丰腴的女性形象,以至很多人认为西方人是以胖为美的. 现实中,通常人们多不以 ...

  • 浅谈语言材料中逻辑推理的“还原”

    浅谈语言材料中逻辑推理的"还原" 邓旺林 不少语言材料尤其是说理性语言材料中包含着逻辑推理,而这些逻辑推理大都不像逻辑学教材所概括的那样单纯.完整和规范,难以让人一目了然.因而将其 ...

  • 浅谈信息技术教学中渗透环境教育

    浅谈如何在信息技术教学中渗透环保教育. 泰来县江桥镇中心小学 赵巍 [摘要]环境问题已成为现代社会普遍关心的一个问题,人们越来越清楚地认识到环境教育的重要性.信息技术作为一门技术性学科,在教学中提出环 ...

  • 浅谈钣金行业中的精益生产管理变革

    钣金行业市场竞争已经白热化,市场价格在逐年降低,而制造成本却不断增加,企业的利润空间已经越来越小,如何在这种激烈的竞争环境下立于不败之地,只有向内部要利润.这自然都想到了精益生产,也是很多企业突破瓶颈 ...

  • 浅谈担保司法解释中抵押担保新规定对银行信贷业务的影响

    作者 中国工商银行宁夏分行法律事务部 陈福录 为正确适用民法典有关担保制度的规定,最高人民法院结合民事审判实践,在深入研判.公开征求意见的基础上,并经分析论证,于2020年12月31日发布了<关 ...

  • 浅谈Transformer模型中的位置表示

    作者:哈工大SCIR 徐啸 0. 何为位置信息 首先简单谈一下位置信息.一般将位置信息简单分为绝对位置信息和相对位置信息,并且前者对句子语义的影响不大,更为重要的是后者. 以情感分析 (Sentime ...