码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 秒杀系统 防止超卖 防止同一用户多次下单 提高qps


    秒杀系统要解决的问题:
    1、防止超卖
    2、防止同一用户多次下单
    2、提高qps

    秒杀基本步骤:
    1、判断商品是否不足
    2、判断同一用户多次下单
    3、更新库存
    4、生成订单

    防止超卖

    1、更新库存的sql 加上判断库存大于0的where

    防止同一用户多次下单

    1、秒杀订单加上 (商品,用户)的唯一索引

    提高qps

    1、页面静态化,后端只返回必要的数据,而不是整个页面。前后端分离就达到了页面静态化的效果。减少后端的数据传输量,提高响应速度。
    2、预先将秒杀商品的库存放入redis,用户下单在redis中预减库存,这比从数据库中读取库存要快得多。加速库存不足的判断。
    3、用户下单成功后,将(用户,商品)存入redis。加速同一用户多次下单的判断
    4、单机内存标记。每个机子有个 商品id映射到库存是否不足的map,减少访问redis来判断库存是否不足。必要的话可以每个机子有个 (用户+商品)映射到是否已购买的map,减少访问redis来判断用户是否多次下单。
    4、redis预减库存后,生产消息放入消息队列,立即返回。利用消息中间件将更新库存、下订单的操作脱离出去,变为异步执行。

  • 相关阅读:
    论基于架构的软件设计方法及应用
    储存卡数据怎么恢复?恢复靠它
    DNS协议、ICMP协议、NAT技术
    Zookeeper整理
    Redis五大基本数据类型的基本命令
    Linux系统访问卡顿 慢
    习练真气运行法必须从调整呼吸入手
    Spring MVC更多家族成员---框架内处理流程拦截与HandlerInterceptor---08
    Swift ——协议
    数据挖掘实战(6)——文本分类(今日头条tnews数据集)
  • 原文地址:https://blog.csdn.net/qq_39989608/article/details/126266183
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号