登录
首页 >  数据库 >  MySQL

Redis秒杀抢购方案

来源:SegmentFault

时间:2023-02-16 15:18:20 464浏览 收藏

怎么入门数据库编程?需要学习哪些知识点?这是新手们刚接触编程时常见的问题;下面golang学习网就来给大家整理分享一些知识点,希望能够给初学者一些帮助。本篇文章就来介绍《Redis秒杀抢购方案》,涉及到MySQL、Redis、秒杀、后端、电商,有需要的可以收藏一下

总体架构方案

网络拦截: DNS优化, SLB负载均衡,网关封IP限速

业务拦截: ID限速, 验证码, 只吸收前面N个请求,后面的全拒绝;

Redis拦截: 库存不超发,保证限购

接口拦截: 尽量减少业务检查,判断黑名单

MQ+MYSQL: 异步处理落库情况;

Redis List方案 + Incrby方案

  1. 从缓存读取出活动信息
  2. 判断活动开始时间和结束时间
  3. redis内无库存就直接返回无库存,活动结束
  4. 读取 UID+活动ID的 参与次数 达到限制就返回限制
  5. 使用Incrby 写入 UID+活动ID的 参与次数,判断返回的次数是否超过限购次数,超过则返回限制
  6. 写入DB(或者用MQ推送给DB削峰落库)

第四点虽然redis是单线程的,但是客户端是多个的,所以第四点的读取和第五点的使用,两个不能同时具有原子性, 必须以 incrby结果为准;

比如一人限购一个,就算某用户第二个请求进来了,把 UID+活动ID 的值 incrby 为2 ,那么这个人返回的也是 “一人只可以购买一个”,对于业务无损;

如果出现Redis崩溃或者Mysql崩溃等异常情况,等待服务恢复后, 可以直接从DB里面的购买记录和库存信息简单同步到redis里面,无需开发人员进行过多操作

Redis List方案支持库存编号模型,如果所有的SKU本身无编号意义或者发货才确定库存,可以使用 Incrby控制库存 + Incrby 控制个人限购数量

今天关于《Redis秒杀抢购方案》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于mysql的内容请关注golang学习网公众号!

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>